上传zip文件时为什么不能获得$ _FILES [“file”] [“tmp_name”]?

时间:2015-06-30 08:59:32

标签: javascript php

这是我第一次来这里,我想知道你是否能理解我的问题,因为我不是来自英语国家。

我想编写一些代码来上传文件,如果您了解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

4 个答案:

答案 0 :(得分:2)

你可以在php.ini

中增加它
upload_max_filesize = 180M
max_file_uploads = 180
upload_max_filesize = 180M

答案 1 :(得分:1)

阅读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限制可以解决您的问题(这将有助于Changing upload_max_filesize on PHP

答案 2 :(得分:0)

试试这个方法:

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中上传的最大文件大小,如其他用户所述:)

答案 3 :(得分:-1)

尝试:

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

这完美无缺!

请注意:PHP File upload