0

我正在尝试将文件上传到服务器。我这样做是这样的:

var fileRef:FileReference = new FileReference();
fileRef.addEventListener(flash.events.Event.SELECT, selectHandler);
fileRef.addEventListener(flash.events.Event.COMPLETE, completeHandler);
fileRef.addEventListener(ProgressEvent.PROGRESS, normalprogressHandler);
fileRef.browse();

function selectHandler(event:flash.events.Event):void
{
    var params:URLVariables = new URLVariables();
    params.date = new Date();
    params.ssid = "94103-1394-2345";
    var request:URLRequest = new URLRequest("http://www.test.com/Uploads"); 
    request.method = URLRequestMethod.POST;
    request.data = params;

    fileRef.upload(request, "Custom1");
}

function completeHandler(event:flash.events.Event):void
{
    trace("uploaded");
}

function normalprogressHandler(event:ProgressEvent):void
{
    var percent:Number = Math.floor((event.bytesLoaded * 100)/ event.bytesTotal );
    trace(percent+"%");
}

是否可以上传文件但无需浏览它?我想自己决定要上传什么文件,而不是用户先执行浏览

4

1 回答 1

4

你不能这样做FileReference有以下限制(参考):

  1. 和API 只能在响应用户交互(例如按钮单击)时调用load()save()
  2. 加载和保存文件的位置不会暴露给 ActionScript。
  3. API 是异步的(非阻塞的)。

显然,如果任意允许 Flash 播放器从本地文件系统上传任何内容到远程服务器,这将带来重大的安全风险。

如果您尝试从 AIR 应用程序上传,您可以对课程执行您想要执行的操作File

于 2012-05-22T08:11:11.347 回答