简体   繁体   English

无法通过php上传文件

[英]Unable to upload file via php

I'm trying to upload a file and then save it by changing it's name. 我正在尝试上传文件,然后通过更改文件名来保存它。 However, it doesn't work and give me this error. 但是,它不起作用,并给我这个错误。

Warning: move_uploaded_file(uploads/564b68ef0e2f8|3d-pc-nature-wallpaper.jpg): failed to open stream: Invalid argument in C:\\wamp\\www\\f\\ajax.php on line 157 警告:move_uploaded_file(uploads / 564b68ef0e2f8 | 3d-pc-nature-wallpaper.jpg):无法打开流:第157行的C:\\ wamp \\ www \\ f \\ ajax.php中的参数无效

Warning: move_uploaded_file(): Unable to move 'C:\\wamp\\tmp\\phpA364.tmp' to 'uploads/564b68ef0e2f8|3d-pc-nature-wallpaper.jpg' in C:\\wamp\\www\\f\\ajax.php on line 157 警告:move_uploaded_file():无法将C:\\ wamp \\ www \\ f \\ ajax.php中的'C:\\ wamp \\ tmp \\ phpA364.tmp'移至'uploads / 564b68ef0e2f8 | 3d-pc-nature-wallpaper.jpg'在第157行

I have verified and the file is correctly going to $_FILES . 我已经验证并且文件正确地转到$ _FILES Here's my code. 这是我的代码。

$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";
}

What is wrong here? 怎么了

You cannot use a pipe (|) in file names. 您不能在文件名中使用管道(|)。 This is the most likely cause of the error you are experiencing. 这是您遇到错误的最可能的原因。 Try change it to an underscore or dash. 尝试将其更改为下划线或破折号。

$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";
}

On windows, filename cannot contain any of the following characters: 在Windows上,文件名不能包含以下任何字符:

\\ / : * ? \\ /:*? " < > | “ <> |

You can't use | 您不能使用| in your filename. 在您的文件名中。 If you want a separator, you can have something like , . 如果要使用分隔符,可以使用, . or any specific string like abc , xy etc, 或任何特定的字符串,例如abcxy等,

So update your code in the following way. 因此,可以通过以下方式更新代码。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM