繁体   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