第一:php上传大文件需要修改服务器的php.ini文件
配置php.ini文件 (以上传500M以下大小的文件为例)
查找以下选项并修改->
file_uploads = On
;打开文件上传选项
upload_max_filesize = 500M
;上传文件上限
如果要上传比较大的文件,仅仅以上两条还不够,必须把服务器缓存上限调大,把脚本最大执行时间变长
post_max_size =
500M ;post上限
max_execution_time = 1800 ; Maximum execution time of each
script, in seconds脚本最大执行时间
max_input_time = 1800 ; Maximum amount of time
each script may spend parsing request data
memory_limit = 128M ; Maximum
amount of memory a script may consume (128MB)内存上限
第二:如果直接用post传,比较慢而且看到发送多少了
这次我是用了一款名叫swfupload的插件,下载插件js,
html:
-
<div id="swfupload-control">
-
-
<input type="button" id="button" />
-
</div>
js
-
$(function(){
-
$('#swfupload-control').swfupload({
-
// var seesionid = <?php echo session_id() ?>;
-
upload_url: "{:U('home/video/uploadvideo')}",
-
file_size_limit : "500MB",
-
file_types : "*.avi;*.mp4;*.flv",
-
file_types_description : "All Files",
-
file_upload_limit : "1",
-
flash_url : "__APP__/../admin/static/swfupload/swfupload.swf",
-
button_image_url : '__APP__/../admin/static/swfupload/XPButtonUploadText_61x22.png',
-
button_width : 61,
-
button_height : 22,
-
button_placeholder : $('#button')[0],
-
file_post_name : "Filedata",
-
post_params : {
-
"id" : "{$_GET['id']}"
-
},
-
// debug: true,
-
custom_settings : {something : "here"}
-
})
-
// .bind('swfuploadLoaded', function(event){
-
// $('#log').append('
- 载入
');
-
// })
-
.bind('fileQueued', function(event, file){
-
$('#log').append('
- 文件名 - '
+file.name+' ');
-
// start the upload since it's queued
-
$(this).swfupload('startUpload');
-
})
-
.bind('fileQueueError', function(event, file, errorCode, message){
-
$('#log').append('<li>文件错误 - '+message+'</li>');
-
})
-
.bind('fileDialogStart', function(event){
-
$('#log').append('<li>文件对话开始</li>');
-
})
-
.bind('fileDialogComplete', function(event, numFilesSelected, numFilesQueued){
-
$('#log').append('<li>文件对话完成</li>');
-
})
-
.bind('uploadStart', function(event, file){
-
$('#log').append('<li>上传开始 - '+file.name+'</li>');
-
})
-
.bind('uploadProgress', function(event, file, bytesLoaded, totalbytes){
-
var proportion = parseInt(bytesLoaded/totalbytes*100);
-
$('#log').append('<li>上传进程 - '+proportion+'%</li>');
-
// $('#log').append('<li>总的 - '+totalbytes+'</li>');
-
})
-
.bind('uploadSuccess', function(event, file, serverData){
-
$('#log').append('<li>上传成功 - '+file.name+'</li>');
-
})
-
.bind('uploadComplete', function(event, file){
-
$('#log').append('<li>上传完成 - '+file.name+'</li>');
-
location.href = "{:U('index')}";
-
})
-
.bind('uploadError', function(event, file, errorCode, message){
-
$('#log').append('<li>上传错误 - '+message+'</li>
后端相当处理 input style=file name=Filedata 的文件
与火狐的兼容性问题:
该插件采用异步传递,会新开一个session,而火狐不会传递sessionid,如果有判断session存在的代码,会通不过,简单的处理方法在upload的php放开session检测
阅读(173) | 评论(0) | 转发(0) |