zoukankan      html  css  js  c++  java
  • html下载文件和上传文件(图片)(java后台(HttpServlet))打开保存路径和选择文件录取+(乱码UTF-8)+包

    下载文件:

    //通过路径得到一个输入流
    
    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

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

  • 相关阅读:
    小结一下在函数使用的时候加括号和不加括号的区别
    总结一下
    JavaScript中操作有些DOM时关于文本节点和元素节点的问题。
    HP DL388 gen9服务器安装RHEL 6.5系统
    第一次经历黑客攻击服务器系统
    小红帽5.9 配置静态IP上网问题
    redhat linux enterprise 5 输入ifconfig无效的解决方法
    关于将一台电脑分割成2个独立运行个体的测试...(1)
    Ubuntu 小白安装血泪史
    RHL 6.0学习日记, 先记下来,以后整理。
  • 原文地址:https://www.cnblogs.com/weibanggang/p/9347863.html
Copyright © 2011-2022 走看看