我现在在action里有一个InputStream,我想实现的功能是用户在界面上点击下载按钮,弹出windows的保存框,选择文件名和路径,把Stream文件保存在指定位置上,求高手指点一下怎么做
解决方案 »
- 求解一道JavaWeb笔试题
- 帮我看下这个小错误
- IIS+Tomcat的小问题
- 两个float数相加的问题?
- request.getRequestDispatcher("/index.jsp").forward(request,response);与普通的forward有何区别?
- 关于传值的问题
- 各位学长,我有件事想请教一下,再相数据库插入数据的时候,那种方法最好呢,为什么,大家看看我用的方法怎么样
- 高分索求个人主页源代码!!!!
- 求JB8教程
- struts2的导出excel功能,使用迅雷下载第一次可以正常下载,第二次下载的是xxxx.action文件,使用浏览器自身下载时每次都是正常的
- Hibernate:关于一对多 我的理解正确吗
- 求高手指点java基础重不重要
到底是啥?乱啦
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
// 设置request对象的字符编码
request.setCharacterEncoding(ENCODING);
//response.setContentType("application/x-msdownload");
// 根据文件的类型设置response对象的ContentType
String contentType = "application/octet-stream";
response.setContentType(contentType);
// 设置response的头信息
response.setHeader("Content-disposition", "attachment;filename=\""
+ new String(file_business_attach.getFile_name().getBytes("GBK"),"ISO8859_1") + "\"");
InputStream is = ios;//流已经得到了
OutputStream os = null;
try
{
os = new BufferedOutputStream(response.getOutputStream());
// 定义buffer
byte[] buffer = new byte[4 * 1024]; // 4k Buffer
int read = 0;
// 从文件中读入数据并写到输出字节流中
while ((read = is.read(buffer)) != -1)
{
os.write(buffer, 0, read);
}
os.flush();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
os.close()
}
,我新建了一个servelet,在action里调用它
结果类执行完了,然后报错getOutputStream() has already been called for this response
想问问高手怎么处理,或者有什么别的下载方式可以实现这个功能
FormFile file = form.getFile();
InputStream stream = file.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream bos = new FileOutputStream(filePath +file.getFileName());int bytesRead = 0;
byte[] buffer = new byte[5120];
while ( (bytesRead = stream.read(buffer, 0, 5120)) != -1) {
bos.write(buffer, 0, bytesRead
}
bos.close();
stream.close();