これは私の最初のActionScript3アプリケーションです。データを特定の場所にアップロードすることになっています。これは、wwwルートの場所(upload.phpが存在する場所)である必要があります。
ActionScriptアプリケーションを実行した後、ファイルを選択すると、データがアップロードされていることを確認できますが、見つけることができません。
よろしくお願いします。何が起こっているのか、アップロードされたデータをどのように見つけることができるかを理解するのを手伝ってください。一時ファイルの場所とターゲットの宛先の両方を確認しました。
これがActionScriptコードです。
package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.*;
import flash.text.*;
public class ch30ex2 extends Sprite {
protected var fileRef:FileReference;
protected var uploadButton:TestButton;
protected var tf:TextField;
protected const YOUR_UPLOAD_URL:String = "http://localhost/Saifa/www/upload.php";
public function ch30ex2() {
fileRef = new FileReference();
fileRef.addEventListener(Event.SELECT, selectHandler);
fileRef.addEventListener(Event.CANCEL, cancelHandler);
fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);
fileRef.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
fileRef.addEventListener(Event.COMPLETE, completeHandler);
var btn:TestButton;
btn = new TestButton(100, 25, "Browse...");
btn.addEventListener(MouseEvent.CLICK, function(event:Event):void {
fileRef.browse();
});
btn.x = btn.y = 20;
addChild(btn);
uploadButton = btn = new TestButton(100, 25, "Upload");
btn.addEventListener(MouseEvent.CLICK, function(event:Event):void {
fileRef.upload(new URLRequest(YOUR_UPLOAD_URL));
});
btn.x = 20; btn.y = 55;
addChild(btn);
tf = new TextField();
tf.defaultTextFormat = new TextFormat("_sans", 11, 0);
tf.multiline = tf.wordWrap = true;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.width = 300; tf.x = 130; tf.y = 58;
addChild(tf);
cancelHandler(null);
}
protected function selectHandler(event:Event):void {
tf.text = fileRef.name;
uploadButton.mouseEnabled = uploadButton.tabEnabled = true;
uploadButton.alpha = 1;
}
protected function cancelHandler(event:Event):void {
tf.text = "";
uploadButton.mouseEnabled = uploadButton.tabEnabled = false;
uploadButton.alpha = 0.3;
}
protected function progressHandler(event:ProgressEvent):void {
tf.text = "Uploading " +
event.bytesLoaded + " / " + event.bytesTotal + "bytes ...";
}
protected function errorHandler(event:ErrorEvent):void {
tf.text = event.text;
}
protected function completeHandler(event:Event):void {
tf.text = "Upload complete!";
}
}
}
import flash.display.*;
import flash.text.*;
class TestButton extends Sprite {
public var label:TextField;
public function TestButton(w:Number, h:Number, labelText:String) {
graphics.lineStyle(0.5, 0, 0, true);
graphics.beginFill(0xa0a0a0);
graphics.drawRoundRect(0, 0, w, h, 8);
label = new TextField();
addChild(label);
label.defaultTextFormat = new TextFormat("_sans", 11, 0, true, false,
false, null, null, "center");
label.width = w;
label.height = h;
label.text = labelText;
label.y = (h - label.textHeight)/2 - 2;
buttonMode = true;
mouseChildren = false;
}
}
一時的にアップロードされたファイルをコピーすることになっているPHPコードは次のとおりです。
<?php
move_uploaded_file($_FILES[‘Filedata’][‘tmp_name’], ‘./‘.time().$_FILES[‘Filedata’][‘name’]);
?>
すべてのコードはActionScript聖書の本からのものです
私は親切に以下をお願いしたいと思います:
- 私の問題の考えられる原因は何でしょうか?
- 私のコードは正しいように見えますか?FlashBuilderで問題なくコンパイルされます
- 問題の原因を特定するにはどうすればよいですか?
- 動作するActionScript+PHPアプリケーションの例があれば、喜んで見ていきます。
いろいろなことや組み合わせを何時間もかけて試しているので、誰かが同じような問題を抱えていたのではないかと思います。ありがとうございました。