繁体   English   中英

PHP文件上传错误类型

[英]PHP File upload wrong type

当我用PHP上传文件时,xlsx文件的类型错误。

告诉我类型是文件名

Array ( 
    [name] => report.xlsx 
    [type] => /folder/files/report/april_2013.xlsx 
    [tmp_name] => E:\path\to\temp\folder\phpCD1B.tmp
    [error] => 0
    [size] => 12433
) 

有任何想法吗?

你好

我正在使用的代码是

查看/显示文件

    <form enctype="multipart/form-data" method="POST" action="update_comp.php" name="myform2">
<label>Upload Files ( PDF,CSV or EXCEL only ) </label>
<input type="file" name="file">
</form>

文件update_comp.php

include ("filesFunctions.php"); 
if(isset($_FILES["file"])){
            $file = $_FILES["file"];
print_r($file);exit;
            $upload = new filesFunctions();
            $id = $upload->uploadFiles($file,'dairy');        

        }

print_r()语句打印

Array (
    [name] => report.xlsx
    [type] => /folder/files/report/april_2013.xlsx
    [tmp_name] => E:\folder\to\temp\php5ACD.tmp
    [error] => 0
    [size] => 12433
) 

请注意,这仅适用于xlsx文件,所有其他文件都可以正常工作

type密钥提供文件的MIME类型,但是此信息由浏览器提供 因此:

但是,不会在PHP端检查此mime类型,因此不要将其值视为理所当然。

但是, $_FILES _ $_FILES超全局绝不是只读的,这$_FILES 像其他超全局变量一样,您的PHP代码可以覆盖它:

$_FILES['file']['type'] = 'Lorem ipsum dolor sit amet';

假设您不喜欢$_FILES ,那么第一个明显的故障排除步骤是启动浏览器的调试器工具并检查其发送的POST数据。 如果这是字符串的来源,那么您可以忘记PHP。

我不知道您的浏览器是什么。 在Google Chrome浏览器中(在其他浏览器中,类似的说明适用),您必须打开上传表单,点击F12 ,然后点击“网络”:

Chrome-网络

选择文件并提交表单后,您将看到请求:

Chrome-提交

展开节点,您将看到数据(在这种情况下为application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ):

Chrome-有效负载

此MIME类型通常由Microsoft Office安装程序配置。 如果您的文件包含/folder/files/report/april_2013.xlsx ,则可能需要修复或重新安装。

只是完全错误的文件? 名称:report.xlsx然后,您说april_2013.xlsx就像@ h2ooooooo所说的。

我认为您只是从另一个文件复制了代码。

暂无
暂无

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

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