Plupload 這支很有名的上傳工具,在前些陣子釋出的版本當中,在範例裡面有一個 s3.php,就是用來讓你可以直接透過他,把你的檔案上傳到 Amazon
S3 上面去。正巧,我在工作上有這方面的需求,所以就稍微研究了一下。
不過,似乎還有些不足。
首先必須說明的,我在這裡使用了兩個比較輕巧的 framework,一個是 Slim,另一個是 Idiorm。
Slim is a PHP 5 Micro Framework [http://www.slimframework.
官方的 example 中,有一個範例的 upload.php,對於重複檔案的檢查有個錯誤。Plupload 使用的上傳方式是 multipart
,所以他會將檔案依照 chunk 的大小分割成許多的 chunks,然後依序的將這些被分割出來的部份上傳到遠端主機上。
// Make sure the fileName is unique but only if chunking is disabled
if ($chunks < 2 && file_exists($targetDir
Plupload 這個上傳器,我想應該不會很陌生吧(應該)。他有一個很微妙的錯誤。
請看上傳端 PHP 處理的這個部份:
// Make sure the fileName is unique but only if chunking is disabled
if ($chunks < 2 && file_exists($targetDir . DIRECTORY_SEPARATOR . $fileName)) {
$ext = strrpos($fileName, '.
上次介紹過這個 超犯規上傳檔案工具
[https://blog.hinablue.me/entry/file-uploader-plupload-by-tinymce-developers/],這次要來繼續犯規。
由於我們需要監聽檔案上傳的動作,我們看他的 API 文件中,有描述了 Event 的項目,但是,倘若使用 pluploadQueue 的方法,他所內建的
Event 就被他的 Queue 給寫死了,從外部就沒辦法直覺的控制。當然,要避免這種情況,就是自己重新畫一個 UI 來用(翻桌)。
所以,
官方網站:http://www.plupload.com/
噗浪討論:http://www.plurk.com/p/44o98a
更新,讓他自己取附檔名:
修改 plupload.js 檔案,第 717 行的 bind 那一段,如下:
/// 原本是這行
file.target_name = file.id + '.tmp';
/// 改成這樣