簡體   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