JavaWeb解决文件上传后项目需要刷新问题 以及 图片过大 文件上传时间延长

在上一篇文件上传的文章中 存在bug   上一篇文件上传

主要的问题是 在web页面文件上传成功后 图片不会在web显示的问题  原因是:没有刷新项目 没有让图片及时到本项目中显示  类似还在缓冲的效果 

解决办法 (让项目自动进行刷新):

1、点击Eclipse的Window 下的Preferences

2、在General 下找到Workspace 把 Refresh using native hooks or polling 和 Refresh on access 勾上  然后点击 Apply and Close

 解决项目刷新问题后 还有一个问题  : 当用户上传的图片特别大的时候  上传需要的时间会更长 会导致网页没有及时进行显示

解决办法(利用图片压缩功能):

需要用到的三个包  下载  密码:01q6

然后复制上一篇文件上传的代码: 更改从49行开始!

 1 package com.it;
 2 
 3 import java.io.File;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 import java.io.InputStream;
 7 import java.util.Date;
 8 import java.util.List;
 9 
10 import javax.servlet.ServletException;
11 import javax.servlet.annotation.WebServlet;
12 import javax.servlet.http.HttpServlet;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
15 
16 import org.apache.commons.fileupload.FileItem;
17 import org.apache.commons.fileupload.FileUploadException;
18 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
19 import org.apache.commons.fileupload.servlet.ServletFileUpload;
20 
21 
22 @WebServlet("/register.do")
23 public class RegisterServlet extends HttpServlet {
24     private static final long serialVersionUID = 1L;
25 
26     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
27         //1
28         DiskFileItemFactory factory=new DiskFileItemFactory();
29         //2
30         ServletFileUpload upload=new ServletFileUpload(factory);
31         //利用文件
32         try {
33             List<FileItem> list=upload.parseRequest(request);
34             for(FileItem fi:list){
35                 //如果是普通
36                 if(fi.isFormField()){
37                     System.out.println(fi.getFieldName()+" "+fi.getString("UTF-8"));
38                 }else{
39                     //判断图片的类型
40                     if(fi.getName().endsWith(".jpg") || fi.getName().endsWith(".png")) {
41                         long ti=new Date().getTime();
42                         int wz=fi.getName().lastIndexOf(".");
43                         String pricn=fi.getName().substring(wz+1);
44                         System.out.println("后缀名:"+pricn);
45                         String pna=ti+"."+pricn;//图片名字设置时间戳
46                         System.out.println("图片名:"+pna);
47                         InputStream in=fi.getInputStream();
48                         File f=new File("D:/pictures/test/"+pna);//输出的位置
49                         Long size=fi.getSize();//得到文件的大小
50 
51                         //判断大小 如果图片大小超过200kb 则进行压缩 否则不压缩 正常输出
52                         if(size>204800) {
53                             //图片进行压缩
54                             Thumbnails.of(fi.getInputStream()).scale(1f).outputQuality(0.25f).toFile(f);
55                         }else {
56                             FileOutputStream out=new FileOutputStream(f);
57                             byte[] b= new byte[1024];
58                             int len;
59                             while((len=in.read(b))>-1){
60                                 out.write(b,0,len);
61                             }
62                             out.close();
63                             in.close();
64                         }
65                     }else {
66                         System.out.println("文件传入错误!");
67                     }
68                 }
69             }
70         } catch (FileUploadException e) {
71 
72             e.printStackTrace();
73         }
74 
75     }
76 
77 
78     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
79         doGet(request, response);
80     }
81 
82 }

效果:

原文地址:https://www.cnblogs.com/xyhghy/p/14862262.html