移动图像时如何动态创建文件夹?
How can I create folder dynamically when moving image?
我用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';
}
}
}
执行时出现如下错误:
rename(C:\xampp\htdocs\myshop\storage\temp\NOTFCjMipXwFhBICo1tj6VXP5Qhv92Fg1kmawcUd.jpeg,C:\xampp\htdocs\myshop\public\img\products\NOTFCjMipXwFhBICo1tj6VXP5Qhv92Fg1kmawcUd.jpeg):
The system cannot find the path specified. (code: 3)
我认为错误发生是因为 $id 文件夹是动态生成的。 $id 文件夹取决于参数 id。如果参数id = 77,那么会这样构成:
C:\xampp\htdocs\myshop\public\img\products\NOTFCjMipXwFhBICo1tj6VXP5Qhv92Fg1kmawcUd.jpeg
所以出现错误是因为文件夹77还不存在
如何在移动图像之前先创建文件夹77(这是动态生成的)?
更新
来自 $photos 的示例数组结果如下:
Array
(
[0] => Array
(
[id] => 1
[name] => vYcHWLXpwhC9WfXd4XCB2emg83WMtWHphyUBq9MV.jpeg
)
[1] => Array
(
[id] => 2
[name] => 1STr51oF8cunSsNEJZyS9upI0hNHYMXjLCCSNonz.jpeg
)
)
使用mkdir()
private function savePhoto($photos, $id)
{
foreach ($photos as $key => $photo) {
$temp = storage_path() . DIRECTORY_SEPARATOR . 'temp' . DIRECTORY_SEPARATOR . $photo['name'];
$idDir = public_path() . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR . 'products' . DIRECTORY_SEPARATOR . $id;
$destinationPath = $idDir . DIRECTORY_SEPARATOR . $photo['name'];
if (!is_dir($idDir)) {
mkdir($idDir, 0777, TRUE);
}
if (rename($temp, $destinationPath)) {
echo 'moved!';
} else {
echo 'failed';
}
}
}
我用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';
}
}
}
执行时出现如下错误:
rename(C:\xampp\htdocs\myshop\storage\temp\NOTFCjMipXwFhBICo1tj6VXP5Qhv92Fg1kmawcUd.jpeg,C:\xampp\htdocs\myshop\public\img\products\NOTFCjMipXwFhBICo1tj6VXP5Qhv92Fg1kmawcUd.jpeg): The system cannot find the path specified. (code: 3)
我认为错误发生是因为 $id 文件夹是动态生成的。 $id 文件夹取决于参数 id。如果参数id = 77,那么会这样构成:
C:\xampp\htdocs\myshop\public\img\products\NOTFCjMipXwFhBICo1tj6VXP5Qhv92Fg1kmawcUd.jpeg
所以出现错误是因为文件夹77还不存在
如何在移动图像之前先创建文件夹77(这是动态生成的)?
更新
来自 $photos 的示例数组结果如下:
Array
(
[0] => Array
(
[id] => 1
[name] => vYcHWLXpwhC9WfXd4XCB2emg83WMtWHphyUBq9MV.jpeg
)
[1] => Array
(
[id] => 2
[name] => 1STr51oF8cunSsNEJZyS9upI0hNHYMXjLCCSNonz.jpeg
)
)
使用mkdir()
private function savePhoto($photos, $id)
{
foreach ($photos as $key => $photo) {
$temp = storage_path() . DIRECTORY_SEPARATOR . 'temp' . DIRECTORY_SEPARATOR . $photo['name'];
$idDir = public_path() . DIRECTORY_SEPARATOR . 'img' . DIRECTORY_SEPARATOR . 'products' . DIRECTORY_SEPARATOR . $id;
$destinationPath = $idDir . DIRECTORY_SEPARATOR . $photo['name'];
if (!is_dir($idDir)) {
mkdir($idDir, 0777, TRUE);
}
if (rename($temp, $destinationPath)) {
echo 'moved!';
} else {
echo 'failed';
}
}
}