我在尝试自己寻找答案时发现了这个问题。解决方案相当简单。
基于其他人已链接的flash player bug 以及该页面上的 cmets,我决定将会话标识符附加到我的上传 URL 并试一试。真的就这么简单!
为了让它工作,我首先添加了一个名为 sessionParams 的 flashVar 参数。这允许我将任何我想要的字符串作为我的会话标识符传递给 Flash 播放器,然后它会被附加到用于上传的 URL。
//sessionParams - resolves firefox upload bug
public var sessionParams:String = "";
//...
public function initApp():void{
sessionParams = Application.application.parameters.sessionParams;
}
在我的例子中,我在 ColdFusion 上启用了 java 会话,所以我的 sessionParams 在被传递到 Flash 播放器之前设置如下:
<cfset flashVars = "sessionParams=#urlEncodedFormat('jsessionid=' & session.sessionid)#" />
不要忘记转义特殊字符,如 =、& 等(我已经使用 urlEncodedFormat 完成了),以便将它们视为“sessionParams”参数值的一部分,而不是断点来指示其他参数。您正在当前 URL 中嵌入未来 URL 信息。
然后,在您的上传代码中使用 sessionParams 值。这是我如何设置的sn-p:
// Set Up URLRequest
_uploadURL = new URLRequest;
_uploadURL.url = _url + "?" + _sessionParams;
_uploadURL.method = "GET";
_uploadURL.data = _variables;
_uploadURL.contentType = "multipart/form-data";
变量名称不同(但相似),因为这是可重用类的一部分。
希望对您有所帮助。如果没有,请告诉我,我会尽力提供更多代码或解释来帮助您。