AS 3.0에서 클라이언트 컴퓨터의 업로드 속도를 테스트해야합니다. 그래서 swf에 포함 된 이미지를 사용자 상호 작용없이 서버에 업로드하려고 생각했습니다. 이 작업을 수행하는 방법에 대해 알고 있습니까?액션 스크립트 3에서 자동 업로드
0
A
답변
1
가장 쉬운 방법은 게시 요청에서 모든 데이터를 바이너리로 보내는 것입니다. 그러나 업로드는 서버 측에서 IO가 필요하기 때문에 다른 점입니다.
서버 측 옵션 및/또는 요구 사항이 명확하지 않습니다. HTML 양식 동작을 모방해야합니까 (즉, 다중 파트 양식 데이터 헤더를 보내야합니까?) 아니면 content-type : application/octet-stream으로 갈 수 있습니까? 첫 번째 작업은 FileReference를 통해서만 수행 할 수 있고 특정 요청에 대한 응답으로 정책 파일을 보내고 소켓을 사용하여 HTTP 프로토콜을 구현하도록 서버를 패치해야하기 때문에 이것은 다릅니다. 그러나 일반 바이너리 데이터 (두 번째 옵션)를 전송하는 것은 구현하기가 더 쉽고 제한이 적지 만 업로드 된 데이터를 사용자가 직접 저장하려면 서버에서 필요한 IO를 관리해야합니다.
사용자가 클릭해야하므로 FileReference 동작을 자동으로 테스트 할 수 없으며 클릭 이벤트에 대한 응답으로 만 데이터를 보냅니다.
0
안녕하세요. 저는이 이미지를 사용하여 가장 좋은 방법을 찾았습니다. 당신이 응답을 먼저 나는 바이트 배열,
private var _byteArray:ByteArray = new ByteArray();
for(var i:int = 0; i < 200 * 1024;i++)
{
_byteArray.writeByte(1);
}
을 만들어 그리고 서버 사용은 URLLoader 해당 2백킬로바이트의이 ByteArray를 보내고
uploadURL = new URLRequest();
uploadURL.url = "upload.php";
uploadURL.contentType = 'application/octet-stream';
uploadURL.method = URLRequestMethod.POST;
uploadURL.data = _byteArray;
urlLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlLoader.load(uploadURL);
protected function completeHandler(event:Event):void
{
trace("Upload Complete");
}
된 URLRequest 감사합니다. 이렇게하는 방법을 찾았습니다. –
첫 번째로, 이에 따라 바이트 배열로 임베드 이미지를 변환합니다. [convert-embed-image-to-bytearray] (http://flexbuilderblog.wordpress.com/2010/01/25/convert-embed-image-to- bytearray /) 그런 다음이 바이트 배열을 서버 (수정)와 함께 [upload-bitmapdata-snapshot-to-server-in-as3] (http://www.quietless.com/)에 따라 서버로 전송합니다. kitchen/upload-bitmapdata-snapshot-to-server-in-as3 /) 그리고 소요 시간을 측정하십시오. –