java如何实现 io流传输过来的文件,提示另存为弹出窗口?

mip版  关注:166  答案:6  悬赏:0

解决时间 2021-01-24 22:00

已解决

2021-01-24 11:06

最佳答案

2021-01-24 11:35

弹出窗口,我理解为浏览器弹出窗口,所以必定有后端服务器程序,这里重点说的就是服务器程序。

第一步:设置Response头部(最关键)

response.setContentType("application/octet-stream;charset=UTF-8");

// 设置弹出框提示的文件名

response.addHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));

第二步:解析输入流

// 这里的in为你的输入流

BufferedInputStream is = new BufferedInputStream(in);

// 准备缓冲区

byte[] buffer = new byte[4096];

第三步:将输入流转换为输出流

BufferedOutputStream os = new BufferedOutputStream(response.getOutputStream());

int offset = 0;

while((offset = is.read(buffer, 0, 4096) > -1) {

os.write(buffer, 0, offset)

}

第四步:关闭输入输出流

os.close();

is.close();

全部回答

1楼

2021-01-24 16:38

web开发吗。如果是java的web开发。

response.setHeader("Content-disposition", "attachment; filename=aaa.xls");// 设定输出文件头

response.setContentType("ContentType");// 定义输出类型注意,这里的文件名需要用iso8859-1编码

2楼

2021-01-24 15:27

可以通过swing技术中的JFileChooser类来实现;

方法如下:

public File getFile(){

final JFileChooser fc = new JFileChooser();

fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

// JFileChooser.FILES_ONLY

// JFileChooser.DIRECTORIES_ONLY

int returnVal = fc.showOpenDialog(this);

File file_choosed = fc.getSelectedFile();

return file_choosed;

}

3楼

2021-01-24 14:51

private void downValid(HttpServletResponse response,NetDiskFile netDiskFile)throws Exception{
try{
if(netDiskFile!=null){
File f = new File(netDiskFile.getAttach());
//文件流的输入
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
response.reset();
response.setCharacterEncoding("gb2312");
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition",
"attachment; filename="+this.toUtf8String(netDiskFile.getFilename())+"."+netDiskFile.getSuffix());
byte[] buf = new byte[1024];
int len = 0;
//文件流的输出
OutputStream output = response.getOutputStream();
while ((len = br.read(buf)) > 0){
output.write(buf, 0, len);
}
br.close();
output.close();
}else{
PrintWriter out=response.getWriter();
out.println("<script language='javascript'>alert(\"you only can download the file, can't do the folder!\");history.back();</script>");
}
}catch(FileNotFoundException e){
PrintWriter out=response.getWriter();
out.print("<script language='javascript'>alert('Sorry,the file could not be found');history.back();</script>");
}catch(Exception e){
PrintWriter out=response.getWriter();
out.print("<script language='javascript'>alert('while downloading,the error happens.');history.back();</script>");
}
}
手写不容易,望采纳,万分感激。

4楼

2021-01-24 13:12

可以通过BufferedReader 流的形式进行流读取,之后通过readLine方法获取到读取的内容。

BufferedReader bre = null;

try {

String file = "D:/test/test.txt";

bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流

while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环

{

System.out.println(str);//原样输出读到的内容

};

备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。

5楼

2021-01-24 12:51

1.通过链接src直接文件路劲。

2.点击一个链接或者按钮,请求一个action或者serlvet。

response.setcontenttype("application/octet-stream");

通过response.getoutputstream();获取输出流,然后write写数据就行了。

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

点此我要举报以上信息!

推荐资讯

大家都在看

java 弹出另存为_java如何实现 io流传输过来的文件,提示另存为弹出窗口?相关推荐

  1. 黑马毕向东Java课程笔记(day20-1——20-17)IO流:File类及相关方法、递归、递归的相关练习、Properties、PrintWriter类与PrintStream类、合并流与切割流

    1.File类概述   File是文件和目录路径名的抽象表示形式. 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作.   前面说到的"流",它只能操作数据,想 ...

  2. 【程序员养成之路】Java基础篇 8-流进流出的IO流(二)

    以下内容若有误,欢迎私信我或在下方留言,谢谢^_− 目录 IO流(二) 1.特殊操作流 1.1 标准流 1.2 打印流 1.3 对象序列化流 1.4 Properties 拓展1:比较字节流和字节缓冲 ...

  3. Educoder–Java高级特性(第一章)- IO流【笔记+参考代码】

    Educoder–Java高级特性(第一章)- IO流[笔记+参考代码] 第一关 1.下列关于字节和字符的说法正确的是(BC) A.字节 = 字符 + 编码 B.字符 = 字节 + 编码 C.字节 = ...

  4. Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举

    Java基础(一):编译和解释.数据类型.变量作用域.String常用方法.数组.面向对象.异常 Java基础(二):集合.IO流(Zip压缩输入/输出流等).File文件类.反射.枚举 Java异常 ...

  5. java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件))

    java基础实现水果超市系统(数组+集合+对象持久化(io流存储到txt文件)) Fruit类 package com.zr.fruitSupermarket;/*** 水果* @author ZR* ...

  6. IO流的应用_Copy文件

    IO流的应用_Copy文件 (1) import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundExce ...

  7. * IO流递归拷贝一个文件夹 按源文件夹格式拷贝

    import java.io.*;/*** IO流递归拷贝一个文件夹 按源文件夹格式拷贝** @author silence*/ public class IoCopy2 {private stati ...

  8. IO流递归拷贝一个文件夹里面的所有文件,到另一个文件夹。如果重复不拷贝,可续拷

    import java.io.*;/*** IO流递归拷贝一个文件夹里面的所有文件,到另一个文件夹.如果重复不拷贝,可续拷* @author silence*/ public class IoCopy ...

  9. CAD打开文件提示许可检出超时,AutoCAD将关闭

    CAD打开文件提示许可检出超时,AutoCAD将关闭 有可能是杀毒软件把CAD残留的进程关掉了.一个操作就能恢复哦! 1. 打开任务管理器 Ctrl+Shift+Esc调出任务管理器 选择服务一栏 2 ...

最新文章

  1. 关于PostMessage后台发送组合键
  2. ubuntu18安装DC2016
  3. TZOJ 5101 A Game(区间DP)
  4. 奋战杭电ACM(DAY9)1013
  5. mysql 事物 锁行 测试_MySQL Transaction--RR事务隔离级别下加锁测试
  6. 调制的缺点_DML、EAM与MZI调制的比较
  7. LeetCode--70. 爬楼梯(动态规划)
  8. 服务器用户设置备份,用户配置文件状态变成“备份”
  9. c++拷贝构造之深拷贝
  10. DisplayUtils
  11. 2021mathor cup钢材制造业中钢材切割
  12. SpringBoot2.0学习第四篇之拦截器过滤器配置
  13. ipa在线安装搭建_五大在线苹果企业签名平台评测:微导流居然打败了蒲公英
  14. iOS --- 使用Mixpanel来统计和分析移动APP的用户数据
  15. 霓虹灯潮流时尚视频制作AE模板素材
  16. ORACLE 仿照原表建表语法
  17. 菜鸡游戏 云游戏平台 低配手机、电视、PCMAC电脑、平板 畅玩大型游戏
  18. vgg16构造模型图(转)
  19. 电脑桌面计算机打开很慢,我的电脑打开很慢怎么办
  20. -webkit-scrollbar 滚动条样式设置

热门文章

  1. webbrowser控件 加载为空白_OpenLayers教程五:地图控件之坐标拾取控件和鹰眼控件...
  2. idea如何将web项目打成war包maven和非maven
  3. 最具发展前景的8大行业,IT行业排第一!
  4. 固定字符结尾的正则_新手上路:图文解读助你理解和使用正则表达式
  5. HDU 1317 XYZZY
  6. ngx-bootstrap使用04 carousel组件
  7. Fiddler-2 Fiddler抓包原理
  8. PHP:函数赋参数默认初值
  9. 命名管道(FIFO) Linux进程进程间的通信之命名管道(FIFO)
  10. 追逐鼠标光标的好奇小猫咪