我在互联网上的教程如何使用HTML5,Javascript和PHP创建上传表单。当我尝试上传时,我上传小文件就好了,但如果我输入更大的内容就会给我一个错误。我想我的第一个错误是因为IIS没有配置为上传大文件所以我修复了,从那时起,每当我尝试从PHP获取文件时我都没有得到任何东西。我得到空参数。以下是我的一些代码:
HTML:
<form id="upload_form" enctype="multipart/form-data" method="post">
<input type="file" name="file1" id="file1"><br>
<input type="button" value="Upload File" onclick="uploadFile()">
<progress id="progressBar" value="0" max="100" style="width:300px;"></progress>
<h3 id="status"></h3>
<p id="loaded_n_total"></p>
</form>
JavaScript的:
function uploadFile(){
var file = _("file1").files[0];
var formdata = new FormData();
formdata.append("file1", file);
var ajax = new XMLHttpRequest();
ajax.upload.addEventListener("progress", progressHandler, false);
ajax.addEventListener("load", completeHandler, false);
ajax.addEventListener("error", errorHandler, false);
ajax.addEventListener("abort", abortHandler, false);
ajax.open("POST", "file_upload_parser.php");
ajax.send(formdata);
}
PHP:
<?php
$fileName = $_FILES["file1"]["name"];
$fileTmpLoc = $_FILES["file1"]["tmp_name"];
$fileType = $_FILES["file1"]["type"];
$fileSize = $_FILES["file1"]["size"];
$fileErrorMsg = $_FILES["file1"]["error"];
if (!$fileTmpLoc) {
echo "ERROR: Please browse for a file before clicking the upload button.";
exit();
}
if(move_uploaded_file($fileTmpLoc, "savefiles/$fileName")){
echo "$fileName upload is complete";
} else {
echo "move_uploaded_file function failed";
}
?>
处理大文件上传的最佳方法是什么?我正在寻找一种上传2GB左右文件的方法。
答案 0 :(得分:3)
要上传大文件,而不是升级服务器中的上传限制,您需要使用像plupload这样允许请求分块的库进行块上传。
请求分块将允许服务器要求客户端浏览器将大文件作为小块发送。这是有效的,并且在大文件的情况下减少了服务器负载。此外,它还允许文件上传恢复,这是大文件上传时非常需要的。
相反,如果您增加post_max_size和upload_max_filesize,请准备好服务器融化!
答案 1 :(得分:3)
您需要在php.ini文件中增加post_max_size
(默认为8M)和upload_max_filesize
(默认为2M)。
您还需要更改memory_limit
,以便它是&gt; = post_max_size
以及max_execution_time
memory_limit
在脚本中设置 max_execution_time
和ini_set
注意:这可能不是最好的答案,如果这不只是你将使用的家庭项目(如果它为什么不只是设置一个FTP服务器而不是使用PHP)。但是,如果你有多个用户,我会选择@SrijithVijayamohan提供的答案