![](/img/trans.png)
[英]PHP and Ajax file upload - Can't get the tmp_name with $_FILES
[英]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中上傳:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.