您的位置:首页 > 编程语言 > Java开发

SPRINGBOOT之文件上传与下载

2017-08-11 10:55 716 查看
注意:代码的编写是在建立Marven工程的基础上编写的

比较简单,直接上代码:

单文件:

@RequestMapping(value = "/testUploadFile", method = RequestMethod.POST)

  public void testUploadFile(HttpServletRequest req,

      MultipartHttpServletRequest multiReq) {

    // 获取上传文件的路径

    String uploadFilePath = multiReq.getFile("file1").getOriginalFilename();

    System.out.println("uploadFlePath:" + uploadFilePath);

    // 截取上传文件的文件名

    String uploadFileName = uploadFilePath.substring(

        uploadFilePath.lastIndexOf('\\') + 1, uploadFilePath.indexOf('.'));

    System.out.println("multiReq.getFile()" + uploadFileName);

    // 截取上传文件的后缀

    String uploadFileSuffix = uploadFilePath.substring(

        uploadFilePath.indexOf('.') + 1, uploadFilePath.length());

    System.out.println("uploadFileSuffix:" + uploadFileSuffix);

    FileOutputStream fos = null;

    FileInputStream fis = null;

    try {

      fis = (FileInputStream) multiReq.getFile("file1").getInputStream();

      fos = new FileOutputStream(new File(".//uploadFiles//" + uploadFileName

          + ".")

          + uploadFileSuffix);

      byte[] temp = new byte[1024];

      int i = fis.read(temp);

      while (i != -1){

        fos.write(temp,0,temp.length);

        fos.flush();

        i = fis.read(temp);

      }

    } catch (IOException e) {

      e.printStackTrace();

    } finally {

      if (fis != null) {

        try {

          fis.close();

        } catch (IOException e) {

          e.printStackTrace();

        }

      }

      if (fos != null) {

        try {

          fos.close();

        } catch (IOException e) {

          e.printStackTrace();

        }

      }

    }

  }

多文件

@RequestMapping(value = "testUploadFiles", method = RequestMethod.POST)
@ResponseBody
public void handleFileUpload(HttpServletRequest request) {
List<MultipartFile> files = ((MultipartHttpServletRequest) request)
.getFiles("file");
MultipartFile file = null;
BufferedOutputStream stream = null;
for (int i = 0; i < files.size(); ++i) {
file = files.get(i);
if (!file.isEmpty()) {
try {
String uploadFilePath = file.getOriginalFilename();
System.out.println("uploadFlePath:" + uploadFilePath);
// 截取上传文件的文件名
String uploadFileName = uploadFilePath
.substring(uploadFilePath.lastIndexOf('\\') + 1,
uploadFilePath.indexOf('.'));
System.out.println("multiReq.getFile()" + uploadFileName);
// 截取上传文件的后缀
String uploadFileSuffix = uploadFilePath.substring(
uploadFilePath.indexOf('.') + 1, uploadFilePath.length());
System.out.println("uploadFileSuffix:" + uploadFileSuffix);
stream = new BufferedOutputStream(new FileOutputStream(new File(
".//uploadFiles//" + uploadFileName + "." + uploadFileSuffix)));
byte[] bytes = file.getBytes();
stream.write(bytes,0,bytes.length);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (stream != null) {
stream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} else {
System.out.println("上传文件为空");
}
}
System.out.println("文件接受成功了");
}


下载文件 服务器端代码:

public void testDownload(HttpServletResponse res) {
String fileName = "upload.jpg";
res.setHeader("content-type", "application/octet-stream");
res.setContentType("application/octet-stream");
res.setHeader("Content-Disposition", "attachment;filename=" + fileName);
byte[] buff = new byte[1024];
BufferedInputStream bis = null;
OutputStream os = null;
try {
os = res.getOutputStream();
bis = new BufferedInputStream(new FileInputStream(new File("d://"
+ fileName)));
int i = bis.read(buff);
while (i != -1) {
os.write(buff, 0, buff.length);
os.flush();
i = bis.read(buff);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("success");
}
}


浏览器代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="http://localhost:8080/testUploadFile" method="POST" enctype="multipart/form-data">
<p>单文件上传:</><br/>
<input type="file" name="file1"/>
<input type="submit" value = "上传"/>
</form>
<form method="POST" enctype="multipart/form-data"
action="http://localhost:8080/testUploadFiles">
<p>多文件上传:</>
<p>文件1:<input type="file" name="file" /></p>
<p>文件2:<input type="file" name="file" /></p>
<p><input type="submit" value="上传" /></p>
</form>
<a href="http://localhost:8080/testDownload">下载</a>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: