在TMP中上传的图片没有文件扩展名?

3
请注意,上传图片后文件仍在TMP文件夹中,当我使用echo命令时:
$_FILES['file']['tmp_name']

我举个例子:

/tmp/phpZnmIfT

所以上传的图片没有扩展名?!这是“正常”的吗?还是缺少了一些Php GD配置?谢谢提前。
5个回答

6

PHP使用临时名称存储文件,这就是你看到的东西。毕竟,两个或更多人可能会上传相同的“file.doc”,如果PHP使用该名称将其存储在服务器上,则一个将覆盖另一个。

您可以使用$_FILE['file']['name']检索原始客户端文件名。有关$_FILE数组结构的完整详细信息,请单击此处


+1 对于手动引用 - 请注意(与某些人想要相信的相反),您不一定会获得原始客户端目录路径和文件名,只有文件名。 - Mark Baker
幸运的是,理智的浏览器会剥离路径信息,因为那可能会造成隐私漏洞。 - Marc B

3
文件将以唯一(且临时)的名称上传到临时目录中。
您需要使用move_uploaded_file()将文件移动到最终位置并适当命名。
第一个用法示例是您想要的。

0
您可以按照以下方式获取原始文件名: 如果您在控制器中获取文件,则可以使用以下代码:
$logo = $request->file('companyLogo');

然后$logo->getClientOriginalName()可以给你原始文件名,你也可以按以下方式检查原始扩展名和文件大小:

$logo->getClientOriginalExtension()
$logo->getSize()

0
如果您检查上传的$_FILES数组的其余部分,您将获得原始上传名称以及已上传文件的MIME类型,您可以使用它来在上传后执行进一步的文件操作(例如使用move_uploaded_file()移动/重命名文件,如前面的帖子所建议的)。

0

是的,这很正常。文件类型(MIME类型)存储在$_FILES['userfile']['type']中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接