关于使用com.flajaxian.fileuploader的种种
最近在一个项目里需要制作一个上传下载控件,还非得指定用com.flajaxian.fileuploader这个东西,主要是公司已经有人把这个包装过一次了,所以让我改装一下放到现在的项目里。
好嘛,改就改,改好了在测试页面没有问题,放到项目里就上传不上去,其他都显示正常就是文件上不去。
对Flash上传不熟,搞的我焦头烂额,我把放在项目里的页里和放测试里的页里的HTML对比了下,除了ID几乎都一样,怎么就不行呢?
然后我下狠手,把项目页里的无关东西都删了,把控件直接拖进去,没有问题。
然后我对比了一下直接拖进去和从项目里动态加进去的HTML码区别,终于发现了问题所在:
targetUrl:"/p.aspx?f=20120202144830_(!AMP!)_itemid=53_(!AMP!)___ID=Ysh_UpDown_ctl14_(!AMP!)_"
这是可用的
targetUrl:"/p.aspx?_(!AMP!)__(!AMP!)___
这是不可用的
很明显,他把页面的参数给截掉了,用reflector反编译找了找,找到了这段
Append(fvSb, "targetUrl", this.PageUrl, "\"");
public string PageUrl { get { if (this._pageUrl == null) { return this.ComposePageUrl(this.Page.Request.Url.AbsoluteUri.Substring(0, this.Page.Request.Url.AbsoluteUri.Length - this.Page.Request.Url.Query.Length)); } return this.ComposePageUrl(this._pageUrl); } set { this._pageUrl = base.ResolveUrl(value); } }
好嘛,还真是特地截掉的参数,为了实现无刷新的效果,用AJAX请求了和当前一样的页,问题是如果uploader的参数跟当前页面的参数有关,就会出问题了。
好在PageUrl提供了接口,把值设置成当前页的全路径,总算是OK了.