簡體   English   中英

上載zip文件時為什么無法獲得$ _FILES [“文件”] [“ tmp_name”]?

[英]Why can't I get $_FILES[“file”][“tmp_name”] when uploading a zip file?

這是我第一次來,我想知道您是否可以理解我的問題,因為我不是來自英語國家。

我想編寫一些代碼來上傳文件,如果您知道PHP或JS,我的代碼很容易理解。 這是我的代碼。

<form action='data.php' method='post' enctype='multipart/form-data'>
  <input type='file' name='file' />
  <input type='submit' />
</form>

$user_uid = rand(0, 50000);
$file_pos = strpos($_FILES['file']['type'], '/');
$file_name = $user_uid . '.' . substr($_FILES['file']['type'], $file_pos + 1);
$savePath = dirname(__FILE__) . '\\' . $file_name;
copy($_FILES['file']['tmp_name'], $savePath);

如上所述,我想獲取文件的tmp_name ,但是如果上傳zip文件或7z文件,則該文件不起作用。 但這對於jpg或其他圖片似乎效果很好,為什么呢?

我嘗試輸出7z的$ _FILES ['file'],如下所示:

對象{名稱:“ 2.zip”,類型:“”,tmp_name:“”,錯誤:1,大小:0}

我發現tmp_name是“”,如果7z的話,它的類型也一樣,那怎么辦? 如果要上傳zip或7z,應該如何更改代碼?


@ 2017年9月13日

在php.ini中增加它並重新啟動服務器

upload_max_filesize = 180M
max_file_uploads = 180
upload_max_filesize = 180M

您可以在php.ini中增加它

upload_max_filesize = 180M
max_file_uploads = 180
upload_max_filesize = 180M

閱讀http://php.net/manual/en/features.file-upload.errors.php顯示error = 1

UPLOAD_ERR_INI_SIZE值:1; 上傳的文件超出了php.ini中的upload_max_filesize指令。

因此,提高upload_max_filesize限制將解決您的問題(這將有助於在PHP上更改upload_max_filesize

試試這個方法:

if(isset($_FILES["file"])){
$allowed =  array('rar','zip' ,'7z', 'RAR', 'ZIP', '7Z');
$filename = $_FILES['file']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!in_array($ext,$allowed) ) {
echo '0';
} else {
// If no errors, upload the file
$target = "../fisiere_pub/"; //choose your upload folder
move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]);
$file = $target . $_FILES["file"]["name"];
 }
} else $file = "Upload error!";
echo $file;

如果此代碼不起作用,請嘗試使用小文件(最大5mb)或更改最大文件大小,以供其他用戶提到在php.ini中上傳:)

嘗試:

move_uploaded_file($_FILES['file']['tmp_name'],$NewPath.$FileName);

這完美地工作!

看: PHP文件上傳

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM