【问题标题】:Unable to upload file via php无法通过php上传文件
【发布时间】:2016-02-19 05:30:49
【问题描述】:

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

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

警告:move_uploaded_file():无法将 'C:\wamp\tmp\phpA364.tmp' 移动到 C:\wamp\www\f\ 中的 '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";
}

这里有什么问题?

【问题讨论】:

  • 确保您的根目录中有 uploads 文件夹。
  • @RajdeepPaul 它与 ajax.php 文件在同一个文件夹中
  • 你确定| 被文件名接受了吗?

标签: php ajax


【解决方案1】:

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

$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 上,文件名不能包含以下任何字符:

\ / : * ? " |

【讨论】:

    【解决方案2】:

    您不能在文件名中使用|。如果你想要一个分隔符,你可以有类似, . 或任何特定字符串,如abcxy 等,

    所以请按以下方式更新您的代码。

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

    【讨论】:

      猜你喜欢
      • 2016-06-07
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 2020-01-05
      • 1970-01-01
      相关资源
      最近更新 更多