我使用laravel 5.3如何在移动图像时动态创建文件夹?
我的代码来移动图像是这样的:
private function savePhoto($photos, $id)
{
foreach($photos as $key => $photo) {
$temp = storage_path() . DIRECTORY_SEPARATOR . 'temp' . DIRECTORY_SEPARATOR . $photo['name'];
$destinationPath = public_path() . DIRECTORY_SEPARATOR . 'img'. DIRECTORY_SEPARATOR .'products'.DIRECTORY_SEPARATOR.$id.DIRECTORY_SEPARATOR.$photo['name'];
if(rename($temp , $destinationPath)){
echo 'moved!';
}
else {
echo 'failed';
}
}
}
在被执行时存在错误是这样的:
重命名(C:\ XAMPP \ htdocs中\ myshop \ storage \ temp \ NOTFCjMipXwFhBICo1tj6VXP5Qhv92Fg1kmawcUd.jpeg,C:\ xampp \ htdocs \ myshop \ public \ img \ products \ 77 \ NOTFCjMipXwFhBICo1tj6VXP5Qhv92Fg1kmawcUd.jpeg): 系统找不到指定的路径。 (代码:3)
我认为发生错误是因为$ id文件夹是动态生成的。 $ id文件夹取决于参数ID。如果参数ID = 77,这将形成这样的:
C:\ XAMPP \ htdocs中\ myshop \ PUBLIC \ IMG \产品\ 77 \ NOTFCjMipXwFhBICo1tj6VXP5Qhv92Fg1kmawcUd.jpeg
所以发生错误的原因文件夹77尚不存在
如何在移动图像之前首先制作文件夹77(这是动态生成的)?
更新
样品阵列结果从$照片是这样的:
Array
(
[0] => Array
(
[id] => 1
[name] => vYcHWLXpwhC9WfXd4XCB2emg83WMtWHphyUBq9MV.jpeg
)
[1] => Array
(
[id] => 2
[name] => 1STr51oF8cunSsNEJZyS9upI0hNHYMXjLCCSNonz.jpeg
)
)
我不得不尝试。但它是一样的。你能完全更新你的答案吗?所以它适应我的情况 –
@samuel,更新了我的答案 –
存在这样的错误:'mkdir():File exists'。如果临时文件夹中有2张图像,只移动了1张图像。应该有2个图像移动 –