无法通过PHP上传文件

时间:2015-11-17 17:56:05

标签: php ajax

我正在尝试上传文件,然后通过更改名称来保存它。但是,它不起作用并给我这个错误。

  
    

警告:move_uploaded_file(uploads / 564b68ef0e2f8 | 3d-pc-nature-wallpaper.jpg):无法打开流:第157行的C:\ wamp \ www \ f \ ajax.php中的参数无效

         

警告:move_uploaded_file():无法在C:\ wamp \ www \ f \'中将'C:\ wamp \ tmp \ phpA364.tmp'移动到'uploads / 564b68ef0e2f8 | 3d-pc-nature-wallpaper.jpg'第157行的ajax.php

  

我已经过验证,文件正确转到 $ _ FILES 。这是我的代码。

$rand_img = uniqid();
$file_upload_folder = "uploads";
$finalImgLink = $file_upload_folder . '/' . $rand_img . '|' . $_FILES['file']['name'];
//move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/$rand_img|' . $_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $finalImgLink))
{
    echo "ok";
}
else
{
    echo "not ok";
}

这里有什么问题?

2 个答案:

答案 0 :(得分:4)

您不能在文件名中使用管道(|)。这是您遇到错误的最可能原因。尝试将其更改为下划线或破折号。

$rand_img = uniqid();
$file_upload_folder = "uploads";
$finalImgLink = $file_upload_folder . '/' . $rand_img . '_' . $_FILES['file']['name'];
//move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/$rand_img|' . $_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $finalImgLink))
{
    echo "ok";
}
else
{
    echo "not ok";
}

在Windows上,filename不能包含以下任何字符:

\ /:*? " < > |

答案 1 :(得分:1)

您无法在文件名中使用|。如果您需要分隔符,则可以使用, .或任何特定字符串,例如abcxy等,

因此,请按以下方式更新您的代码。

$finalImgLink = $file_upload_folder . '/' . $rand_img . ".." . $_FILES['file']['name'];