PHP SWFUpload 500是一款非常流行的PHP文件上傳插件,它可以通過Flash實(shí)現(xiàn)多個文件同時上傳。有很多網(wǎng)站都在使用它來實(shí)現(xiàn)文件上傳。但是在使用過程中,你可能會遇到一些問題,比如上傳的文件大小限制。本文將為你詳細(xì)介紹如何解決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對象來配置上傳參數(shù)。其中 file_size_limit 參數(shù)指定了上傳文件的大小限制,file_types 參數(shù)指定了上傳文件的類型,file_upload_limit 參數(shù)指定了上傳文件的數(shù)量限制。
如果上傳文件的大小超過了 file_size_limit 的限制,那么上傳會失敗。這個功能是非常有必要的,因?yàn)榉?wù)器很容易因?yàn)樯蟼鞔笪募罎ⅰ5怯袝r候,我們需要上傳更大的文件,可能超過了默認(rèn)限制。這個時候,我們需要修改代碼。
如果你想上傳更大的文件,只需要在 PHP 的配置文件 php.ini 中修改 upload_max_filesize 和 post_max_size 參數(shù)即可。例如:
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; };
這個方法實(shí)現(xiàn)了文件大小的限制。如果文件大小超過了 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是一款非常強(qiáng)大的文件上傳插件。它可以通過Flash實(shí)現(xiàn)多個文件同時上傳。如果你遇到文件大小限制的問題,可以通過上述方法來解決。在修改代碼時,一定要注意代碼結(jié)構(gòu)和語法錯誤。