在Flash中的一个请求中上传多个文件的最佳方法是什么?

时间:2011-03-24 06:00:28

标签: flash actionscript-3

我需要模拟一个Web表单能够在FORM中包含尽可能多的文件输入,并让所有文件在一个请求中一起到达。

在AS3中执行所述操作的规定方法是什么? (我正在使用AIR,但我怀疑这有什么不同。)

TIA

3 个答案:

答案 0 :(得分:1)

您可以执行多部分表单上传。我认为我使用的课程是http://blog.inspirit.ru/?p=139,但是当我到办公室时我必须仔细检查。

编辑:是的,上面的链接是正确的。这个特殊的类使文件上传和multipart/form-data在AS3中几乎没有用。

答案 1 :(得分:1)

就像我在评论中所说,我讨厌回答我自己的问题,但我找到了这个解决方案:http://blog.mikestead.me/upload-multiple-files-with-a-single-request-in-flash/ 它确实很好用,完全是代码完整的,我几乎不做任何涂鸦。 文档未能详述的唯一内容(我将在此处添加)是在服务器端(特别是在PHP中)文件到达由您设置的变量名称索引的哈希。所以当你这样做时

urlVariables["image1"] = new URLFileVariable(filePicker.data, filePicker.name); //this adds your file to the request in flash

然后在PHP端,您将在

中找到该文件
$_FILES["image1"]["tmp_name"];

答案 2 :(得分:0)

您有两种方法:压缩或跟踪多个上传。

如果您想压缩文件,请参阅演示on how to go about zipping, uploading, and unzipping from AIR

如果你想上传多个文件,你需要做的是有一个布尔数组或一个计数器来跟踪启动的上传量。然后,在捕获上传完成的事件上,布尔值需要从false转到true,否则另一个计数器需要计算完成次数。一旦所有布尔值都为真或两个计数器值匹配,您就知道所有文件都已上传。

这是一些伪代码:

fileCount= 0
fileUploadCompleteCount = 0

foreach(file in fileArray)
    fileCount++
    file.listenForUploadComplete(uploadComplete)

function uploadComplete()
    fileUploadCompleteCount++
    checkUploadProgress()

function checkUploadProgress()
    if(fileUploadCompleteCount == fileCount)
        // all files have been uploaded