• 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 }

    效果:

  • 相关阅读:
    python基础 列表生成式
    docker 基础
    xpath例子
    redis删除以什么开头的key
    redis 关闭持久化
    python爬虫 保存页面
    python爬虫操作cookie
    SQl函数的写法
    加料记录(大屏幕)
    ios 调试
  • 原文地址:https://www.cnblogs.com/xyhghy/p/14862262.html
Copyright © 2020-2023  润新知