php上传500M以上的压缩包,如何用PHP上传500MB以上的大文件?

可以使用两种方式使用PHP上传大文件。这两个都在下面讨论-通过更改php.ini文件中的upload_max_filesize限制。

通过实现文件块上载,可以将上载拆分为较小的块,并在完成上载时将这些块组装在一起。

可以如下所示更新php.ini文件-upload_max_filesize = 50M

post_max_size = 50M

max_input_time = 300

max_execution_time = 300

应该避免这种情况,因为它也会更改服务器和其他项目的设置。

更新htacess文件php_value upload_max_filesize 50M

php_value post_max_size 50M

php_value max_input_time 300

php_value max_execution_time 300

更改内联设置-<?php

//更改上传限制

ini_set('upload_max_filesize', '50M');

ini_set('post_max_size', '50M');

ini_set('max_input_time', 300);

ini_set('max_execution_time', 300);

//设置目标文件夹

$source = $_FILES["file-upload"]["tmp_name"];

$destination = $_FILES["file-upload"]["name"];

//上载的文件夹已移至目的地

move_uploaded_file($source, $destination);

?>

块状

在此过程中,将大文件拆分为较小的部分,然后上传。可以下载和使用“ Plupload”库。<?php

//响应功能

function verbose($ok=1,$info=""){

//上载失败引发400错误

if ($ok==0) { http_response_code(400); }

die(json_encode(["ok"=>$ok, "info"=>$info]));

}

//无效上传

if (empty($_FILES) || $_FILES['file']['error']) {

verbose(0, "无法移动上载的文件。");

}

//上传目的地

$filePath = __DIR__ . DIRECTORY_SEPARATOR . "uploads";

if (!file_exists($filePath)) {

if (!mkdir($filePath, 0777, true)) {

verbose(0, "Failed to create $filePath");

}

}

$fileName = isset($_REQUEST["name"]) ? $_REQUEST["name"] : $_FILES["file"]["name"];

$filePath = $filePath . DIRECTORY_SEPARATOR . $fileName;

//处理块

$chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0;

$chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 0;

$out = @fopen("{$filePath}.part", $chunk == 0 ? "wb" : "ab");

if ($out) {

$in = @fopen($_FILES['file']['tmp_name'], "rb");

if ($in) {

while ($buff = fread($in, 4096)) { fwrite($out, $buff); }

} else {

verbose(0, "Failed to open input stream");

}

@fclose($in);

@fclose($out);

@unlink($_FILES['file']['tmp_name']);

} else {

verbose(0, "Failed to open output stream");

}

//检查文件是否已上传

if (!$chunks || $chunk == $chunks - 1) {

rename("{$filePath}.part", $filePath);

}

verbose(1, "Upload OK");

?>

尝试上载大于500 MB的文件时,将成功上载该文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值