response.setContentType(application.getMimeType("a.jpg"))
response.setHeadr("Content-Disposition","attachment;filename="+filename)
上传需要满足的条件
form
enctype="mulltipart/form-data"
method="post"
type="file"
后台流程
工厂
解析器
解析request 遍历 fileItem
文件上传:
package web;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FilenameUtils;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
public class UploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DiskFileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);
try {
List<FileItem> list = upload.parseRequest(request);
for (FileItem fileItem : list) {
if(fileItem.isFormField()){
System.out.println(fileItem.getFieldName()+"==>"+fileItem.getString("utf-8"));
}else {
String uuid = UUID.randomUUID().toString().replace("-", "");
String name = fileItem.getName();
String ext = FilenameUtils.getExtension(name);
String realPath = getServletContext().getRealPath("/upload");
File file=new File(realPath);
if(!file.exists()){
file.mkdirs();
}
try {
fileItem.write(new File(realPath,uuid+"."+ext));
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
文件下载:
package web;
import utils.FileNameUtil;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
public class DownLoadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
String mimeType = servletContext.getMimeType("iu.jpg");
response.setHeader("Content-Type",mimeType);
String filename = FileNameUtil.encode(request, "李智恩.jpg");
response.setHeader("content-Disposition","attachment;filename="+filename);
String realPath = servletContext.getRealPath("/uodate/iu.jpg");
ServletOutputStream outputStream = response.getOutputStream();
FileInputStream fis = new FileInputStream(realPath);
int temp;
byte[] b=new byte[1024];
while ((temp=fis.read(b))!=-1){
outputStream.write(b,0,temp);
}
fis.close();
}
}
@RequestMapping(value="/download")
public ResponseEntity<byte[]> downloadsEntity(HttpServletRequest request) throws Exception{
String path = "D:\\aaa";
String fileName="21天学通java.jpg";
File file=new File(path,fileName);
if(!file.isFile()){
return null;
}
@SuppressWarnings("resource")
InputStream input=new FileInputStream(file);
byte[] buff=new byte[input.available()];
input.read(buff) ;
HttpHeaders headers=new HttpHeaders();
headers.add("Content-Disposition", "attachment;filename="+fileName);
HttpStatus status=HttpStatus.OK;
ResponseEntity<byte[]> entity=new ResponseEntity<byte[]>(buff,headers,status);
return entity;
}