Java用输出流下载文件的时候如何直接弹出(打开)保存对话框
展开全部
你好,请看下这段程序
<%
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>
<%
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
展开全部
写文件下载的时候的时候都是传到服务器一个请求 服务器根据请求 给你返回一个流文件 IE根据你文件头的标示 给你自动打开或者提示 一个对话框的
一般不用你去写 如果你用组件或者struts的上传下载的话 还可以自己设定浏览器是能打开的就打开(比如图片或者txt)不能打开的就显示对话框的,当然自己写代码也能实现的!(麻烦80-90行是至少的)
一般不用你去写 如果你用组件或者struts的上传下载的话 还可以自己设定浏览器是能打开的就打开(比如图片或者txt)不能打开的就显示对话框的,当然自己写代码也能实现的!(麻烦80-90行是至少的)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接在response中,把流文件写进去就可以了。
浏览器就自动弹出打开、保存了。
至于response中怎么写流,上网自己找。
浏览器就自动弹出打开、保存了。
至于response中怎么写流,上网自己找。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接给各服务器上文件的连接,就会自动出另存为吧.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询