Java用输出流下载文件的时候如何直接弹出(打开)保存对话框

就像平时我们在网站下东西一样,如果选择打开有怎么写,跪求~!~谢谢... 就像平时我们在网站下东西一样,如果选择打开有怎么写,跪求~!~谢谢 展开
 我来答
lylegend13
2010-02-09 · TA获得超过4696个赞
知道大有可为答主
回答量:1701
采纳率:0%
帮助的人:1720万
展开全部
你好,请看下这段程序

<%
response.setCharacterEncoding("gb2312");
request.setCharacterEncoding("gb2312");

if (request.getParameter("file") != null) {
OutputStream os = null;
FileInputStream fis = null;
try {
String file = request.getParameter("file");
if (!(new File(file)).exists()) {
System.out.println("没有文件");
return;
}
System.out.println("文件名为:"+file);
os = response.getOutputStream();
response.setHeader("content-disposition", "attachment;filename=" + file);
response.setContentType("application/vnd.rn-realmedia-vbr");//此项内容随文件类型而异
byte temp[] = new byte[1000];
fis = new FileInputStream(file);
int n = 0;
while ((n = fis.read(temp)) != -1) {
os.write(temp, 0, n);
}
} catch (Exception e) {
out.print("出错");
} finally {
if (os != null)
os.close();
if (fis != null)
fis.close();
}
out.clear();
out = pageContext.pushBody();

}
%>

<form action="" method="post">
<select name="file">
<option value="C:\\Downloads\\冷山\\冷山.rmvb">
冷山
</option>
</select>
<input type="submit">
</form>

参考资料: http://hi.baidu.com/lylegend13/blog/item/3518361f3421d8c3a6866928.html

314649444
2010-02-08 · TA获得超过232个赞
知道小有建树答主
回答量:331
采纳率:0%
帮助的人:195万
展开全部
写文件下载的时候的时候都是传到服务器一个请求 服务器根据请求 给你返回一个流文件 IE根据你文件头的标示 给你自动打开或者提示 一个对话框的
一般不用你去写 如果你用组件或者struts的上传下载的话 还可以自己设定浏览器是能打开的就打开(比如图片或者txt)不能打开的就显示对话框的,当然自己写代码也能实现的!(麻烦80-90行是至少的)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
laobaitu0322
2015-07-17 · TA获得超过744个赞
知道小有建树答主
回答量:900
采纳率:33%
帮助的人:642万
展开全部

  可以用JFileChooser类中的showSaveDialog方法。

  比如这个例子,打开对话框保存了一个图片。  

			JFileChooser jfc=new JFileChooser("."); 
        jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
        FileNameExtensionFilter filter1 = new FileNameExtensionFilter("*.png", "png");
        FileNameExtensionFilter filter2 = new FileNameExtensionFilter("*.jpg", "jpg");
        FileNameExtensionFilter filter3 = new FileNameExtensionFilter("*.jpeg", "jpeg");
        jfc.addChoosableFileFilter(filter1);
        jfc.addChoosableFileFilter(filter2);
        jfc.addChoosableFileFilter(filter3);
        jfc.setAcceptAllFileFilterUsed(false);
        jfc.setFileFilter(filter1);
        jfc.setSelectedFile(new File("2D_Code"));
        int returnVal = jfc.showSaveDialog(MainFrame.this);
        if(returnVal == JFileChooser.APPROVE_OPTION)
        {
         File file = jfc.getSelectedFile();
         if(file.exists())
         {
         int i = JOptionPane.showConfirmDialog(this, "File exists! Overwrite it?","Attention",JOptionPane.OK_OPTION);
         if(i != JOptionPane.OK_OPTION)
         return;
         }
         try {
ImageIO.write(image, imgType, file);
JOptionPane.showMessageDialog(this, "Successfully saved!");
} catch (IOException e1) {
JOptionPane.showMessageDialog(this, "Failed saving.");
e1.printStackTrace();
}
        }

  除了showSaveDialog方法赖保存文件外,还有showOpenDialog来打开文件对话框

  具体的请参阅JFileChooser的API

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8d3bdf3bc
2010-02-08 · TA获得超过368个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:185万
展开全部
直接在response中,把流文件写进去就可以了。

浏览器就自动弹出打开、保存了。

至于response中怎么写流,上网自己找。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
嘸限畅赽
2015-06-26 · TA获得超过357个赞
知道小有建树答主
回答量:413
采纳率:50%
帮助的人:109万
展开全部
直接给各服务器上文件的连接,就会自动出另存为吧.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式