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实现多个文件同时上传。如果你遇到文件大小限制的问题,可以通过上述方法来解决。在修改代码时,一定要注意代码结构和语法错误。