为什么使用MOVE_UPLOADED_FILE函数后,为什么我会拥有损坏的图像文件



我有一个表格:

<form action='' enctype="multipart/form-data" method="post">
<input type="file" name="image">
<input type="submit" value="send">
</form>

我有php代码:

$file = $_FILES['image']
$ext = explode(",", $file['type'])[0];
$location = "../image/movedimage.$ext";
if(move_uploaded_file($file['tmp_name'], $location)) echo 'moved';
else echo 'internal error';

这个回声"移动",但问题是当我检查文件移动的路径时,其中的图像文件已损坏。

我必须通过这样做来更改上传图像的系统:

 $file_content = file_get_contents($file['tmp_name']);
 $file_dump = file_put_contents($location, $file_content);

这种尝试使用file_put_contents直接放置文件的尝试正常工作,并且图像文件是完美的,就像上传一样,但使用move_uploaded_file将损坏的文件留在目标文件夹中。我想了解为什么$file['error']返回值0,而move_uploaded_file函数不返回false

,为什么会发生这种情况。

在您的代码中使用

$ext = explode(",", $file['type'])[0];

您将扩展名为image/your_image_type。然后,您将使用文件名附加在一起,该文件名将创建一个无效的图像。要获得扩展,您可以按以下方式执行

$ext= explode("/", $file['type'])[1];

$ext = strtolower(end(explode('.',$_FILES['image']['name'])));

相关内容

  • 没有找到相关文章

最新更新