我試圖創建一個多圖像上傳(認爲Coppermine),其中用戶點擊一個SWF按鈕,選擇一個文件或多個文件,然後這些文件上傳到一個目錄。多個圖像上傳不工作
我有一個處理上傳文件的PHP腳本,我的Flash文件迭代FileReferenceList
中的文件並將文件發送到此PHP腳本上傳。在PHP腳本的目錄路徑是正確的,權限設置爲777。
我的ActionScript 3.0類看起來像這樣的內容:
package com.yourfightsite.imageupload {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.events.ProgressEvent;
import flash.external.ExternalInterface;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.FileReferenceList;
import flash.net.URLRequest;
public class ImageUpload extends MovieClip {
private var uploadURL:URLRequest;
private var fileRef:FileReferenceList;
public function ImageUpload():void {
uploadURL = new URLRequest();
uploadURL.url = stage.loaderInfo.parameters.uploadUrl;
fileRef = new FileReferenceList();
uploadButton.addEventListener(MouseEvent.CLICK, buttonClickHandler);
}
private function buttonClickHandler(e:MouseEvent):void {
var imageFilter:FileFilter = new FileFilter('Images', '*.jpg');
fileRef.browse(new Array(imageFilter));
fileRef.addEventListener(Event.SELECT, fileSelectHandler);
}
private function fileSelectHandler(e:Event):void {
for each(var fileToUpload:FileReference in fileRef.fileList) {
addFileToQueue(fileToUpload.name);
uploadSingleFile(fileToUpload);
}
}
private function uploadSingleFile(file:FileReference):void {
file.upload(uploadURL);
file.addEventListener(Event.COMPLETE, completeHandler);
}
private function ioErrorHandler(e:IOErrorEvent):void {
trace('ioErrorHandler: ' + e);
ExternalInterface.call('console.error', e);
}
private function progressHandler(e:ProgressEvent):void {
var fileRef:FileReference = FileReference(e.target);
var percentUploaded:Number = Math.round((e.bytesLoaded/e.bytesTotal)*100);
updateFileInQueue(e.target.name, percentUploaded);
}
private function completeHandler(e:Event):void {
markFileInQueueAsComplete(e.target.name);
}
private function addFileToQueue(filename:String):void {
ExternalInterface.call('addFileToQueue', filename);
}
private function updateFileInQueue(filename:String, percent:Number):void {
ExternalInterface.call('updateFileInQueue', filename, percent);
}
private function markFileInQueueAsComplete(filename:String):void {
ExternalInterface.call('markFileInQueueAsComplete', filename);
}
}
}
在火類的JavaScript函數底部的三種方法在我的HTML頁面中,將文件名添加到文件隊列小部件,並更新它們旁邊的百分比值,最後將它們標記爲完整。
但是,當我選擇文件時,它們按預期方式被添加到文件隊列小部件,然後什麼也不是。文件未上傳,文件隊列小部件中的文件不會更新,並且在發佈我的電影時不會在控制檯(我使用Chrome)或Flash中拋出錯誤。
任何人都可以看到我上面的ActionScript中的任何錯誤?
它能做什麼?你有沒有嘗試在你的動作腳本中放置簡單的TRACE(「HERE(fn name)」)來查看哪些函數正在發射以及按照什麼順序?另外 - 爲什麼你去Flash - > Java腳本 - > PHP?爲什麼不跳過JavaScript? – ethrbunny 2012-01-01 22:22:31
我不是Flash程序員,我的主要熟練程度是PHP,所以上述課程通過各種網站和書籍作爲參考/資源進行組合。 – 2012-01-02 13:48:34