使用html5上传器上传大文件
我的问题是我需要上传大的视频文件,但不是那么大。比如100~500mb。有70mb的视频我可以做到。当我试图上传一个大文件时,firefox崩溃并关闭。铬也是如此。我正在使用html5uploader.js /* *使用HTML 5将文件上载到服务器拖放本地计算机上的文件夹 *测试版本:Mozilla Firefox 3.6.12、Google Chrome 7.0.517.41、Safari 5.0.2、WebKit r70732 *当前版本不适用于:Opera 10.63、Opera 11 alpha、IE 6+。 */ 函数上传器(位置、状态、targetPHP、显示){ //body+=“内容处理:表单数据;name='upload';filename='”+file.name+“\r\n”;使用html5上传器上传大文件,html,upload,wamp,Html,Upload,Wamp,我的问题是我需要上传大的视频文件,但不是那么大。比如100~500mb。有70mb的视频我可以做到。当我试图上传一个大文件时,firefox崩溃并关闭。铬也是如此。我正在使用html5uploader.js /* *使用HTML 5将文件上载到服务器拖放本地计算机上的文件夹 *测试版本:Mozilla Firefox 3.6.12、Google Chrome 7.0.517.41、Safari 5.0.2、WebKit r70732 *当前版本不适用于:Opera 10.63、Opera 11
body+=“内容处置:表单数据;name='upload';filename='”+encodeURI(file.name)+“'\r\n”; 正文+=“内容类型:”+file.Type+“\r\n\r\n”;
正文+=bin+“\r\n”;
正文+='-'+边界+'-';
setRequestHeader('content-type','multipart/form数据;boundary='+boundary); //Firefox 3.6提供了sendAsBinary()功能 如果(xhr.sendAsBinary!=null){ xhr.sendAsBinary(主体); //Chrome7发送数据,但必须在PHP端使用base64_解码 }否则{ xhr.open('POST',targetPHP+'?up=true&base64=true',true); setRequestHeader('UP-FILENAME',file.name); setRequestHeader('UP-SIZE',file.SIZE); setRequestHeader('UP-TYPE',file.TYPE); xhr.send(window.btoa(bin)); } 如果(显示){ var newFile=document.createElement('div'); tamanho=((file.size)/1024)/1024); tamanhoMB=tamanho.toFixed(2); newFile.innerHTML='Nome do arquivo:'+file.name+'| Tamanho:'+tamanhoMB+'MB'; document.getElementById(show).appendChild(newFile);
} 如果(状态){ document.getElementById(status.innerHTML='Upload concliído!Arraste o próximo arquivo'; } };
// Loading errors
this.loadError = function(event) {
switch(event.target.error.code) {
case event.target.error.NOT_FOUND_ERR:
document.getElementById(status).innerHTML = '<h4>Arquivo não encontrado!</h4>';
break;
case event.target.error.NOT_READABLE_ERR:
document.getElementById(status).innerHTML = '<h4>Arquivo não legível!</h4>';
break;
case event.target.error.ABORT_ERR:
break;
default:
document.getElementById(status).innerHTML = '<h4>Erro de leitura.</h4>';
}
};
// Reading Progress
this.loadProgress = function(event) {
if (event.lengthComputable) {
var percentage = Math.round((event.loaded * 100) / event.total);
document.getElementById(status).innerHTML = '<h4>Carregando... '+percentage+'%</h4>';
}
};
// Preview images
this.previewNow = function(event) {
bin = preview.result;
var img = document.createElement("img");
img.className = 'addedIMG';
img.file = file;
img.src = bin;
document.getElementById(show).appendChild(img);
};
reader = new FileReader();
// Firefox 3.6, WebKit
if(reader.addEventListener) {
reader.addEventListener('loadend', this.loadEnd, false);
if (status != null)
{
reader.addEventListener('error', this.loadError, false);
reader.addEventListener('progress', this.loadProgress, false);
}
// Chrome 7
} else {
reader.onloadend = this.loadEnd;
if (status != null)
{
reader.onerror = this.loadError;
reader.onprogress = this.loadProgress;
}
}
var preview = new FileReader();
// Firefox 3.6, WebKit
if(preview.addEventListener) {
preview.addEventListener('loadend', this.previewNow, false);
// Chrome 7
} else {
preview.onloadend = this.previewNow;
}
// The function that starts reading the file as a binary string
reader.readAsBinaryString(file);
// Preview uploaded files
if (show) {
preview.readAsDataURL(file);
}
// Safari 5 does not support FileReader
} else {
xhr = new XMLHttpRequest();
xhr.open('POST', targetPHP+'?up=true', true);
xhr.setRequestHeader('UP-FILENAME', file.name);
xhr.setRequestHeader('UP-SIZE', file.size);
xhr.setRequestHeader('UP-TYPE', file.type);
xhr.send(file);
if (status) {
document.getElementById(status).innerHTML = '100% carregado';
}
if (show) {
var newFile = document.createElement('div');
newFile.innerHTML = file.name+' (Tamanho: '+file.size+' Bytes)';
document.getElementById(show).appendChild(newFile);
}
}
};
// Function drop file
this.drop = function(event) {
event.preventDefault();
var dt = event.dataTransfer;
var files = dt.files;
if (files.length<=2){
for (var i = 0; i<files.length; i++) {
var file = files[i];
upload(file);
}
}else{
alert('Limite de upload excedido! Máximo permitido: dois arquivos.');
}
};
// The inclusion of the event listeners (DragOver and drop)
this.uploadPlace = document.getElementById(place);
this.uploadPlace.addEventListener("dragover", function(event) {
event.stopPropagation();
event.preventDefault();
}, true);
this.uploadPlace.addEventListener("drop", this.drop, false);
重新启动wamp,不起作用。在wamp\bin\apache\Apache2.2.17\conf\extra\httpd-vhosts.conf上,我放置了以下内容:
LimitRequestBody 102400
选项索引如下SYMLINKS包括ExecCGI
允许超越所有
命令允许,拒绝
通融
也没用。有人有办法救我吗?我真的很感激。谢谢
// Loading errors
this.loadError = function(event) {
switch(event.target.error.code) {
case event.target.error.NOT_FOUND_ERR:
document.getElementById(status).innerHTML = '<h4>Arquivo não encontrado!</h4>';
break;
case event.target.error.NOT_READABLE_ERR:
document.getElementById(status).innerHTML = '<h4>Arquivo não legível!</h4>';
break;
case event.target.error.ABORT_ERR:
break;
default:
document.getElementById(status).innerHTML = '<h4>Erro de leitura.</h4>';
}
};
// Reading Progress
this.loadProgress = function(event) {
if (event.lengthComputable) {
var percentage = Math.round((event.loaded * 100) / event.total);
document.getElementById(status).innerHTML = '<h4>Carregando... '+percentage+'%</h4>';
}
};
// Preview images
this.previewNow = function(event) {
bin = preview.result;
var img = document.createElement("img");
img.className = 'addedIMG';
img.file = file;
img.src = bin;
document.getElementById(show).appendChild(img);
};
reader = new FileReader();
// Firefox 3.6, WebKit
if(reader.addEventListener) {
reader.addEventListener('loadend', this.loadEnd, false);
if (status != null)
{
reader.addEventListener('error', this.loadError, false);
reader.addEventListener('progress', this.loadProgress, false);
}
// Chrome 7
} else {
reader.onloadend = this.loadEnd;
if (status != null)
{
reader.onerror = this.loadError;
reader.onprogress = this.loadProgress;
}
}
var preview = new FileReader();
// Firefox 3.6, WebKit
if(preview.addEventListener) {
preview.addEventListener('loadend', this.previewNow, false);
// Chrome 7
} else {
preview.onloadend = this.previewNow;
}
// The function that starts reading the file as a binary string
reader.readAsBinaryString(file);
// Preview uploaded files
if (show) {
preview.readAsDataURL(file);
}
// Safari 5 does not support FileReader
} else {
xhr = new XMLHttpRequest();
xhr.open('POST', targetPHP+'?up=true', true);
xhr.setRequestHeader('UP-FILENAME', file.name);
xhr.setRequestHeader('UP-SIZE', file.size);
xhr.setRequestHeader('UP-TYPE', file.type);
xhr.send(file);
if (status) {
document.getElementById(status).innerHTML = '100% carregado';
}
if (show) {
var newFile = document.createElement('div');
newFile.innerHTML = file.name+' (Tamanho: '+file.size+' Bytes)';
document.getElementById(show).appendChild(newFile);
}
}
};
// Function drop file
this.drop = function(event) {
event.preventDefault();
var dt = event.dataTransfer;
var files = dt.files;
if (files.length<=2){
for (var i = 0; i<files.length; i++) {
var file = files[i];
upload(file);
}
}else{
alert('Limite de upload excedido! Máximo permitido: dois arquivos.');
}
};
// The inclusion of the event listeners (DragOver and drop)
this.uploadPlace = document.getElementById(place);
this.uploadPlace.addEventListener("dragover", function(event) {
event.stopPropagation();
event.preventDefault();
}, true);
this.uploadPlace.addEventListener("drop", this.drop, false);
upload_max_filesize -> 1024mb,
post_max_size -> 1024mb,
max_execution_time -> 600,
max_input_time -> 600,
memory_limit -> 2048mb.