淘先锋技术网

首页 1 2 3 4 5 6 7

PHP SWFUpload 500是一款非常流行的PHP文件上传插件,它可以通过Flash实现多个文件同时上传。有很多网站都在使用它来实现文件上传。但是在使用过程中,你可能会遇到一些问题,比如上传的文件大小限制。本文将为你详细介绍如何解决PHP SWFUpload 500的大小限制问题,并提供代码示例。

首先,我们来看一下PHP SWFUpload 500的一般上传代码:

<form id="upload-form">
<input type="hidden" name="PHPSESSID" value="<?php echo session_id(); ?>" />
<div>
<input type="file" name="file-0" id="file-0" />
<input type="button" id="upload-btn" value="Upload" />
</div>
</form>
<script type="text/javascript">
var swfu;
$(function() {
var settings = {
upload_url: "upload.php",
flash_url: "swfupload/swfupload.swf",
post_params: {
"PHPSESSID": "<?php echo session_id(); ?>"
},
file_size_limit : "5 MB",
file_types : "*.jpg;*.jpeg;*.gif;*.png;*.bmp",
file_types_description : "Image Files",
file_upload_limit : 0,
file_queue_limit : 0,
button_placeholder_id : "upload-btn",
button_text : "Select Files",
button_width : 120,
button_height : 30,
button_text_style : "",
button_text_top_padding : 3,
button_text_left_padding : 12,
file_dialog_start_handler : fileDialogStart,
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
upload_start_handler : uploadStart,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
custom_settings : {
progressTarget : "upload-progress",
cancelButtonId : "upload-cancel"
},
debug : false
};
swfu = new SWFUpload(settings);
});
function fileDialogStart() {
// ...
}
function fileQueued(file) {
// ...
}
// 其他方法省略
</script>

这段代码是一个简单的上传表单,其中包括一个文件选择框和一个上传按钮。在Javascript中,我们使用SWFUpload对象来配置上传参数。其中 file_size_limit 参数指定了上传文件的大小限制,file_types 参数指定了上传文件的类型,file_upload_limit 参数指定了上传文件的数量限制。

如果上传文件的大小超过了 file_size_limit 的限制,那么上传会失败。这个功能是非常有必要的,因为服务器很容易因为上传大文件而崩溃。但是有时候,我们需要上传更大的文件,可能超过了默认限制。这个时候,我们需要修改代码。

如果你想上传更大的文件,只需要在 PHP 的配置文件 php.ini 中修改 upload_max_filesize 和 post_max_size 参数即可。例如:

upload_max_filesize = 100M
post_max_size = 100M

这将允许上传最大文件大小为 100MB 的文件。但是,这只能解决PHP的限制,不能解决SWFUpload插件的限制。

如果你想上传更大的文件,那么你需要修改 SWFUpload.js 文件。在 SWFUpload.js 中,我们可以找到以下代码:

File.prototype.checkSize = function() {
if (this.size === 0) {
this.fileStatus = SWFUpload.FILE_STATUS.ERROR;
this.fileErrorCode = SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE;
return false;
} else if (this.size > this.swfupload.settings.file_size_limit) {
this.fileStatus = SWFUpload.FILE_STATUS.ERROR;
this.fileErrorCode = SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT;
return false;
}
return true;
};

这个方法实现了文件大小的限制。如果文件大小超过了 file_size_limit,那么SWFUpload会返回一个错误,阻止上传。如果你想上传更大的文件,你可以修改这个方法中的条件判断。例如:

File.prototype.checkSize = function() {
if (this.size === 0) {
this.fileStatus = SWFUpload.FILE_STATUS.ERROR;
this.fileErrorCode = SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE;
return false;
} else if (this.size > this.swfupload.settings.file_size_limit * 10) {
this.fileStatus = SWFUpload.FILE_STATUS.ERROR;
this.fileErrorCode = SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT;
return false;
}
return true;
};

在这个例子中,我们将文件大小的限制放宽了10倍。这样就可以上传更大的文件了。

总之,PHP SWFUpload 500是一款非常强大的文件上传插件。它可以通过Flash实现多个文件同时上传。如果你遇到文件大小限制的问题,可以通过上述方法来解决。在修改代码时,一定要注意代码结构和语法错误。