sma*_*irt 9 apache-flex upload firefox file
我有一个将文件上传到服务器的flex应用程序.服务器要求身份验证才能上载.在IE中,上传工作正常.但是在FF和Safari中,它不会上传.我已经看到各地的人都遇到同样的问题,但没有答案.不要让我失败现在stackoverflowers.
我在尝试自己寻找答案时发现了这个问题。解决方案相当简单。
根据其他人链接的Flash 播放器错误以及该页面上的评论,我决定将会话标识符附加到我的上传 URL 并尝试一下。真的就是这么简单!
为了使其正常工作,我首先添加一个名为 sessionParams 的 flashVar 参数。这允许我将任何想要的字符串作为我的会话标识符传递给 Flash 播放器,并且稍后它将附加到用于上传的 URL 中。
//sessionParams - resolves firefox upload bug
public var sessionParams:String = "";
//...
public function initApp():void{
sessionParams = Application.application.parameters.sessionParams;
}
Run Code Online (Sandbox Code Playgroud)
就我而言,我使用启用了 java 会话的 ColdFusion,因此sessionParams在传递到 Flash 播放器之前我的设置如下:
<cfset flashVars = "sessionParams=#urlEncodedFormat('jsessionid=' & session.sessionid)#" />
Run Code Online (Sandbox Code Playgroud)
不要忘记转义 =、& 等特殊字符(我已使用 urlEncodedFormat 完成),以便将它们视为“sessionParams”参数值的一部分,而不是指示其他参数的断点。您正在将未来 URL 信息嵌入到当前 URL 中。
然后,在上传代码中使用 sessionParams 值。这是我如何设置的一个片段:
// Set Up URLRequest
_uploadURL = new URLRequest;
_uploadURL.url = _url + "?" + _sessionParams;
_uploadURL.method = "GET";
_uploadURL.data = _variables;
_uploadURL.contentType = "multipart/form-data";
Run Code Online (Sandbox Code Playgroud)
变量名称不同(但相似),因为这是可重用类的一部分。
希望这对您有帮助。如果没有,请告诉我,我将尝试提供更多代码或解释来帮助您。