达内云笔记(六) 文件上传下载

来源:互联网 发布:知乎 复制 编辑:程序博客网 时间:2024/06/16 19:27
RequestMapping(value="" produces="content-type")
ResponseBody 如果是java bean就处理为Json,如果是byte[] 就将byte数组填充到返回消息的body中
ByteArrayOutputStream用内存数组为输出目标

BufferedImage img = new BufferedImage(200,56,BufferedImage.TYPE_3BYTE_BGR);
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(img,"png",out);
byte[] png = out.toByteArray();
return png;
会自动设置content-length即 数组长度

下载:

图片
res.addHeader("Content-Disposition","attachment;filename=\"girl.png\""); (查HTTP协议和Tomcat web文件)

Excel(word):
导包 POI 3.12(可以操纵word)
//content-type
@RequestMapping(value="" produces="application/vnd.ms-excel")

res.addHeader("Content-Disposition","attachment; filename=\"hello.xls\"");
//创建Excel工作簿对象
HSSFWorkbook workbook = new HSSFWorkbook();
//在工作簿中创建工作表
HSSFSheet sheet = workbook.createSheet();
//创建一行
HSSFRow row = sheet.createRow(0);
//创建一个格子
row.createCell(0);
//向格子填充数据
cell.setCellValue("Hello World!");
//将Excel对象序列化为byte[]数据
ByteArrayOutputStream out = new ByteArrayOutputSream();
workbook.write(out);
byte[] buf = out.toByteArray();
return buf;

上传:
浏览器端:
HTTP协议:Form-based File Upload in HTML
<FORM ENCTYPE="multipart/form-data" Action = "" Method="post">
  <INPUT NAME="" TYPE="file"/>
</FORM>
服务器端:
导包:
commons-fileupload.jar→ Spring MVC对其封装→ Controller方法的参数名为上传的文件名 MultipartFile 文件名
需要配置:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

  <property name="maxUploadSize" value="1000000"/>//文件大小限制这里是1000kb

</bean>

Java代码:
String filename = photo.getOriginalFilename();
String type = file.getContentType();
byte[] data = file.getBytes();
File file = new File("d:/",filename);
FileOutputStream out = new FileOutputStream(file);
out.write(data);
out.close();


原创粉丝点击