软件编程
位置:首页>> 软件编程>> java编程>> java文件上传下载代码实例

java文件上传下载代码实例

作者:弓长张&木子李  发布时间:2023-11-10 05:06:14 

标签:java,上传,下载

本文实例为大家分享了java文件上传下载的具体代码,供大家参考,具体内容如下

文件上传


@RequestMapping(value="/uploadFile",method=RequestMethod.POST)
public ResultObject uploadFiles(@RequestParam("file")MultipartFile file,HttpServletRequest request){
   ResultObject rs = null;//返回上传完成信息
   String uploadDir = "files";//上传目录,文件保存在webapp下的files文件中
  if(!file.isEmpty()) {
    //可以对user做一些操作如存入数据库
    //以下的代码是将文件file重新命名并存入Tomcat的webapp目录下项目的下级目录
    String fileRealName = file.getOriginalFilename();          //获得原始文件名;
    /*int pointIndex = fileRealName.indexOf(".");            //点号的位置
    String fileSuffix = fileRealName.substring(pointIndex);       //截取文件后缀
    UUID FileId = UUID.randomUUID();            //生成文件的前缀包含连字符
    String savedFileName = FileId.toString().replace("-", "").concat(fileSuffix);    //文件存取名
    */
String savedDir = request.getSession().getServletContext().getRealPath(uploadDir); //获取服务器指定文件存取路径
    File savedFile = new File(savedDir, fileRealName);
    boolean isCreateSuccess;
    try {
      isCreateSuccess = savedFile.createNewFile();
      if (isCreateSuccess) {
file.transferTo(savedFile); //转存文件
        rs = ResultObject.getSuccessResult("上传文件成功");
        Long size = file.getSize();//获取文件大小
rs.setData(uploadDir+fileRealName);
      }else{
        rs = ResultObject.getFailResult("请修改文件名,重新上传");
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }else{
    rs = ResultObject.getFailResult("文件不能为空");
  }
  return rs;
}

文件下载


@RequestMapping(value = "/filterPermission/appDownLoad", method = RequestMethod.GET)
 public void appDownLoad(HttpServletRequest request, HttpServletResponse response) {
   //url是上面文件上传的url
   download(url,request,response);
 }

public String download(String filePath, HttpServletRequest request, HttpServletResponse response) {
   BufferedInputStream bis = null;
   BufferedOutputStream bos = null;
   try {
     //获取文件名
     String fileName = filePath.substring(filePath.lastIndexOf("/")+1);
     response.setCharacterEncoding("utf-8");
     response.setContentType("application/octet-stream");
     //response.setContentType("application/force-download");
     //处理下载弹出框名字的编码问题
     response.setHeader("Content-Disposition", "attachment;fileName="
         + new String( fileName.getBytes("gb2312"), "ISO8859-1" ));
     //获取文件的下载路径
     String path = request.getSession().getServletContext().getRealPath(filePath);
     //利用输入输出流对文件进行下载
     InputStream inputStream = new FileInputStream(new File(path));
     //设置文件大小
     response.setHeader("Content-Length", String.valueOf(inputStream.available()));
bis = new BufferedInputStream(inputStream);//构造读取流
     bos = new BufferedOutputStream(response.getOutputStream());//构造输出流
     byte[] buff = new byte[1024];
     int bytesRead;
     //每次读取缓存大小的流,写到输出流
     while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
       bos.write(buff, 0, bytesRead);
     }
     response.flushBuffer();//将所有的读取的流返回给客户端
} catch (FileNotFoundException e) {
     e.printStackTrace();
   } catch (IOException e) {
     e.printStackTrace();
   }finally{
     try{
       if(null != bis){
         bis.close();
       }
       if(null != bos){
         bos.close();
       }
     }catch(IOException e){
       System.out.println("下载文件失败,"+"文件路径:"+filePath+e);
       logger.error("文件下载失败!", e);
     }
   }
   // 返回值要注意,要不然就出现下面这句错误!
   //java+getOutputStream() has already been called for this response
   return null;
 }

以上所述是小编给大家介绍的java文件上传下载详解整合,希望对大家有所帮助。

来源:https://www.cnblogs.com/gczmn/p/9921479.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com