czw333
2009-04-28 11:46
浏览 215
已采纳

Flex 中下载文件如何得到文件名

目标文件在服务器端生成,文件名不确定。
[b]问题:[/b]下载文件时要求保持服务器生成的文件名不变,在Flex端下载时如何得到这个文件名呢?(默认情况下它会显示servlet的名字)
[b]问题补充:[/b]
[quote]服务器端是java的么,用response.setHeader("filename",你想要的名字)试试[/quote]
谢谢回答这个问题的仁兄,我的是java写的,也设置了这个header,问题是Flex不认这个,它是在文件真正开始下载前就要提示用户选择保存位置的。我在Flex端用的是FileReference这个类。
[b]问题补充:[/b]
我现在的做法是用navigateToURL(new URLRequest("servlet?id=123"),"_blank");来做的.
还没有在FileReference中找到相应的办法,它只对请求的是已经存在的文件有作用,比如:http://www.xx.com/aa.zip,这样可以保存成aa.zip,或者是重命名,但对于动态生成的文件就无能为力了.
我想这样说,大家更能明白我的意思了吧?
[b]问题补充:[/b]
[quote]...我建议REST的方法你可以试试
即用urlrewriter,把servlet?id=11&name=aa.zip改为
http://xxx/downfileServlet/aa.zip?id=11
这样flex解析url是aa.zip,而你的filter能解析出id=11 [/quote]

非常感谢这位仁兄,你说的这个方式我还真没想过。不过,我这里的文件名是根据条件生成的,是动态的,而serlvet配置又不允许/servlet/*.zip这样的语法,所以...

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • xiaozhen 2009-05-06 15:19
    已采纳

    不一定非要是/server/*.zip,可以是任意目录下,只要你配置好

    <servlet>
        <servlet-name>yourdownfileServlet</servlet-name>
        <servlet-class>
            net.com.your.servlet
        </servlet-class>
    </servlet>
    


    yourdownfileServlet
    /downabcdxyz/*

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • xiaozhen 2009-04-28 14:09

    服务器端是java的么,用response.setHeader("filename",你想要的名字)试试

    评论
    解决 无用
    打赏 举报
  • xiaozhen 2009-05-05 21:38

    具体flex我不懂,但如果是你说的这样,我建议REST的方法你可以试试
    即用urlrewriter,把servlet?id=11&name=aa.zip改为
    http://xxx/downfileServlet/aa.zip?id=11
    这样flex解析url是aa.zip,而你的filter能解析出id=11

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题