我需要模拟一个Web表单能够在FORM中包含尽可能多的文件输入,并让所有文件在一个请求中一起到达。
在AS3中执行所述操作的规定方法是什么? (我正在使用AIR,但我怀疑这有什么不同。)
TIA
答案 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