下载文件:

//通过路径得到一个输入流

String path =  "获取需要下载的文件路径";      

//path.lastIndexOf(".")+1可以获取文件后缀名字 如:doc等

  //this.getServletContext().getRealPath("");可以访问当前服务器地址    

String fileName="保存文件的名称" ;       

//设置保存文件的乱码问题
String encodedfileName = null;
String agent = request.getHeader("USER-AGENT");
if(null != agent && -1 != agent.indexOf("MSIE")){//IE
encodedfileName = java.net.URLEncoder.encode(fileName,"UTF-8");
}else if(null != agent && -1 != agent.indexOf("Mozilla")){
encodedfileName = new String (fileName.getBytes("UTF-8"),"iso-8859-1");
}else{
encodedfileName = java.net.URLEncoder.encode(fileName,"UTF-8");
}
//设置响应格式
response.setHeader("content-disposition", "attachment;filename=encodedfileName); //输入流,获得文件的字节流
InputStream is=new FileInputStream(path);//path是下载文件的路径
byte[] bytes=new byte[is.available()];
is.read(bytes); //将字节流写入response中
response.getOutputStream().write(bytes);
is.close();
response.flushBuffer();
response.getOutputStream().flush();

上传文件:

//设置上传的路径

String savePath=this.getServletConfig().getServletContext().getRealPath("");
File file=new File(savePath);
//判断是否存在 不存在就创建
if(!file.exists()){
file.mkdirs();
}
DiskFileItemFactory fac=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(fac);
upload.setHeaderEncoding("utf-8");
List<FileItem> filelist=null;
try {
filelist=upload.parseRequest(request);
} catch (FileUploadException e) {
// TODO Auto-generated catch block
return;
}
Iterator<FileItem> it=filelist.iterator();
String name="";
String extName="";
while(it.hasNext()){
FileItem item=it.next();
if(!item.isFormField()){
name=item.getName();
long size=item.getSize();
String type=item.getContentType();
//判断是否为空
if(name==null||name.trim().equals("")){
continue;
}
if(name.lastIndexOf(".")>=0){
extName=name.substring(name.lastIndexOf("."));
} File files=null;
name=id;
files=new File(savePath+name+extName);
try {
item.write(files);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 response.getWriter().print("上传成功");
}

需要两个包:

commons-io-1.4.jar

commons-fileupload-1.2.1.jar

下载地址:https://github.com/weibanggang/iofilego

希望能够帮助大家,有问题请留言,感谢!

html下载文件和上传文件(图片)(java后台(HttpServlet))打开保存路径和选择文件录取+(乱码UTF-8)+包的更多相关文章

  1. MVC&WebForm对照学习:文件上传(以图片为例)

    原文  http://www.tuicool.com/articles/myM7fe 主题 HTMLMVC模式Asp.net 博客园::首页::  ::  ::  ::管理 5 Posts :: 0 ...

  2. jsp+springmvc实现文件上传、图片上传和及时预览图片

    1.多文件上传:http://blog.csdn.net/a1314517love/article/details/24183273 2.单文件上传的简单示例:http://blog.csdn.net ...

  3. Django积木块三——静态文件和上传文件

    静态文件和上传的文件 # 静态文件 STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), ) # ...

  4. chunkupload 文件上传断点续传组件(java) - 正式发布

    chunkupload简介 chunkupload是一款基于java语言的断点续传组件,针对文件上传,非文件下载,集成方便,使用简单. chunkupload实现如下功能: ·  实现断点续传 ·  ...

  5. dwz+jquery+fileupload+springmvc实现文件上传 及图片预览

    1 前台jsp:文件的上传利用了iframe实现局部刷新功能.使用了apache的fileupload组件,用到的jar: commons-fileupload.jar,commons-io.jarD ...

  6. Spring4 MVC 多文件上传(图片并展示)

    开始需要在pom.xml加入几个jar,分别是 <dependency> <groupId>commons-fileupload</groupId> <art ...

  7. chunkupload文件上传断点续传组件(java)

    chunkupload简介 chunkupload是一款基于java语言的断点续传组件,针对文件上传,非文件下载,集成方便,使用简单. 从整体上讲,chunkupload会对文件进行切片处理,每个切片 ...

  8. webform文件上传、图片水印、验证码

    文件上传: 所用控件:FileUpload 使用时的思路: 1.判断用户是否选中了文件 FileUpload.FileName获取选中的文件名,判断长度,如果长度大于零就代表已经选择了文件 JS端:通 ...

  9. Servlet 实现上传文件以及同时,写入xml格式文件和上传

    package com.isoftstone.eply.servlet; import java.io.BufferedReader; import java.io.BufferedWriter; i ...

随机推荐

  1. Windows 7安装PlayReady出现“任务被禁用”错误信息

    问题描述: Windows 7的Windows media center中安装PlayReady时出现:错误信息:任务被禁用.(异常来自 HRESULT:0x80041326) 解决办法: 先请确认是 ...

  2. 案例43-crm练习获取客户列表使用struts2

    1 src下配置文件 1 struts.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYP ...

  3. CTPN_论文阅读总结

    论文全名:Detecting Text in Natural Image with Connectionist Text Proposal Network 1.摘要 (1)本文提出新型网络CTPN,用 ...

  4. 使用新浪API生成短连接

    公司最近需要进行短信推广,需要发送大批量带有连接地址的短信给用户,并且需要统计短信的点击量.因为需要考虑短信成本问题,需要将长连接地址生成比较短的连接.因为公司本身没有短的一级域名,所以考虑到使用第三 ...

  5. SpringSecurity 3.2入门(9)自定义权限控制代码实现

    1. 一个自定义的filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性,我们的所有控制将在 ...

  6. 使用Spring的AOP实现切面日志

    AOP切面日志的使用方式 @Aspect @Component public class HttpAspect { private static final Logger logger = Logge ...

  7. PAT 1024 Palindromic Number

    #include <cstdio> #include <iostream> #include <cstdlib> #include <algorithm> ...

  8. OLEDB 参数化查询

    一般情况下,SQL查询是相对固定的,一条语句变化的可能只是条件值,比如之前要求查询二年级学生信息,而后面需要查询三年级的信息,这样的查询一般查询的列不变,后面的条件只有值在变化,针对这种查询可以使用参 ...

  9. Visual Studio Code打开终端控制台

    刚学习Node.js开发,使用vscode开发工具.一开始使用Windows命令窗口输出Node结果,但是觉得太麻烦了,每次都要从vscode开发工具切换到Windows命令窗口,来来回回. 然后想, ...

  10. spring boot 项目在启动时执行指定sql文件

    参考博客: https://www.jianshu.com/p/88125f1cf91c 1. 启动时执行 当有在项目启动时先执行指定的sql语句的需求时,可以在resources文件夹下添加需要执行 ...