ここにあるような Flash AS3 で作られたスケッチ パッドがあります: http://henryjones.us/articles/using-the-as3-jpeg-encoder
サーバーにjpgを送信し、phpを使用してhtmlフォームフィールドからいくつかのデータを送信したいと考えています。送信ボタンを押したときに、Flash ムービーに画像ファイルを配信させる方法はありますか?
ここにあるような Flash AS3 で作られたスケッチ パッドがあります: http://henryjones.us/articles/using-the-as3-jpeg-encoder
サーバーにjpgを送信し、phpを使用してhtmlフォームフィールドからいくつかのデータを送信したいと考えています。送信ボタンを押したときに、Flash ムービーに画像ファイルを配信させる方法はありますか?
少し注意が必要です。次の2つの方法のいずれかで実行できます。
Arthemはこれを別のスレッドに投稿しました:
これは私にとって大きな助けになりました: http ://www.quietless.com/kitchen/upload-bitmapdata-snapshot-to-server-in-as3/
URLRequestWrapperを変更して、必要に応じてフィールド名とファイル名を挿入する必要があります。これが私がしたことです:
bytes ='Content-Disposition:form-data; name = "'+ $ fieldName +'"; filename = "';
サーバーがファイルのアップロードとして理解できるように、ヘッダーのほとんどのフォーマットを実行します。
ちなみに、BitmapDataがある場合は、最初にJPEGまたはPNGにエンコードする必要があるかもしれません。
そして、私は通常このソリューションを使用します:
私はimageshackAPIを使用していませんが、adobeのJPGEncoderクラスを使用してみてください。ユーザー名とJPGのバイト配列を渡す簡単な例を次に示します。これは非常に簡単です。
private function savePicToServer(bmpData:BitmapData):void
{
var jpgEncoder:JPGEncoder = new JPGEncoder(85);
var jpgStream:ByteArray = jpgEncoder.encode(bmpData);
var loader:URLLoader = new URLLoader();
configureListeners(loader);
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var request:URLRequest = new URLRequest(ModelLocator.BASE_URL + ModelLocator.UPLOAD_URL + "?user=" + ModelLocator.getInstance().username);
request.requestHeaders.push(header);
request.method = URLRequestMethod.POST;
request.data = jpgStream;
loader.load(request);
}
変数はクエリ文字列の一部として渡されることに注意してください。URLVariablesは、byteArrayを渡すためにすでに使用しているリクエストのデータプロパティに格納されるため、複数の人が示唆しているように、URLVariablesを使用することはできません。
暗号化された認証コード形式の Flash を JPG 画像とともに PHP に送信したいと考えていました。これをget変数に投稿するのは適切ではなかったので、この方法で回避しました。コードの大部分はステージ スナップショットの実際の収集ですが、その特定の領域のみです。ここに関連する部分は、writeMultiByte を使用して暗号化されたパスワードを jpb 画像情報の末尾に追加することです。次に、get variables url 文字列を使用してこのパスワードの長さを送信し、PHP が末尾を切り取る必要があることを認識できるようにします。
var stage_snapshot:BitmapData = new BitmapData(600, 120);
var myRectangle:Rectangle = new Rectangle(0, 0, 600, 120);
var myMatrix:Matrix = new Matrix();
var translateMatrix:Matrix = new Matrix();
translateMatrix.translate(-101, -33);
myMatrix.concat(translateMatrix);
stage_snapshot.draw(stage,myMatrix,null,null,myRectangle);
trace ("creating JPGEncoder");
// Setup the JPGEncoder, run the algorithm on the BitmapData, and retrieve the ByteArray
var encoded_jpg:JPGEncoder = new JPGEncoder(100);
var jpg_binary:ByteArray = new ByteArray();
jpg_binary = encoded_jpg.encode(stage_snapshot);
var pw = cryptoSalt.encrypt("mysecretpassword");
**var pwLength = pw.length;
jpg_binary.writeMultiByte(pw,"us-ascii");**
trace ("stage snapshot taken");
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
var request:URLRequest = new URLRequest("savejpg.php?length1=" + pwLength);
request.requestHeaders.push(header);
request.method = URLRequestMethod.POST;
request.data = jpg_binary;
var loader:URLLoader = new URLLoader();
trace ("sending pic to php");
loader.load(request);
loader.addEventListener(Event.COMPLETE,finishSave);
受信 PHP:
$pwlength = $_GET['length1'];
$jpg = $GLOBALS["HTTP_RAW_POST_DATA"];
$pw = substr($jpg, - $pwlength);
$jpg = substr($jpg,0,strlen($jpg) - $pwlength);
$filename = 'uploads/test.jpg';
file_put_contents($filename, $jpg);
file_put_contents("uploads/pw.txt",$pw);
HTTPServiceを使用してデータを送信できます。チュートリアルの並べ替えの紹介です。