下载上传设计的技术点及关键代码

Posted xiaoxiaozhouzhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了下载上传设计的技术点及关键代码相关的知识,希望对你有一定的参考价值。

一、下载,一般用于数据下载,模板下载。Excel模板文件(以下简称,文件)下载为例,且是Maven项目。

1.首先要明确放在服务器的文件地址,

  放在java文件的同级目录,类名.class.getClassLoader.getResource(""),获取文件地址,在开发阶段没问题,但Maven打成war包发布后URL会找不到。

URL输出为,xxx/webapp/WEB-INF/classes/com.xxx.类名。注意是开发阶段没问题。manve打成war包发布,模块是单独的jar包原因吧。

正确做法:

1.1.把模板放置到xxx.web模块的src/main/resources目录template/*.xlsx下;

1.1.1修改pom.xml文件,补充<exclude>标签

  <build>

  ...

  <directory>src/main/resources</directory>

       <artifactId>maven-war-plugin</artifactId>

       <targetPath>WEB-INF/classes</targetPath>

  <excludes>

    <exclude>template/*</exclude>

  </excludes>

  </build>

注意,因为不排除*.xlsx文件,打包后的模板文件会损坏。

1.2 获取路径代码

URL fileURL = Thread.currentThread().getContextClassload().getResource("template/*.xlsx");

File file = new File(fileURL.toURI());

//设置response header

//设置response 文件类型(可选)

//设置response contentLength

InputStream input = new FileInputStream(file);

BufferedOutputStream bos = new FileInputStream(response.getOutputStream());

byte[] byteArr = new byte[2048];

while(input.read(byteArr) != -1){

  bos.write(byteArr);

}

input.close();bos.close();

 

二、上传,包含,文件上传和Excel解析

1.页面注意提交表单必须是enctype="multipart/form-data"这个属性。

2.如果想补充参数,注意查看浏览器提交内容,也是附件的形式提交的,后台取值与去附件类似。

//解析附件部分:

//commons-fileupload-1.3.2.jar/org.apache.commons.fileupload.disk

DiskFileItemFactory factory = new DiskFileItemFactory();

ServletFileupload upload = new ServletFileupload();

List<FileItem> list = (List<FileItem>)upload.parseRequest(request);

//POI解析Excel部分:

for(FileItem item :list){

  InputStrem input = item.getInputStream();

  Workbook wb = WorkbookFactory.create(input);

  Sheet sheet  = wb.getSheet("Sheet1");

  int rows = sheet.getPhyscalNumerOfRows();

  // for,rows->  Row row = sheet.getRow(rowNum);

  row.getCell(columnNum);

//注意,row.getCell(columnNum);取出的Cell对象不一定是String类型,需要根据不同的类型判断(或者找个取值的Utils文件处理)。

}

上传,主要还是校验。

 

以上是关于下载上传设计的技术点及关键代码的主要内容,如果未能解决你的问题,请参考以下文章

iOS屏幕旋转技术点及解决方案总结

一文搞懂音视频开发技术点及职业发展方向

技术点12:文件的上传和下载

基于人脸识别的登陆认证方案及思路

VMware桌面虚拟化的价值点及应用场景

vue 饿了么的技术点