×

fileupload上传文件 java怎么用 file

java怎么用commons-fileupload实现上传文件?Files是什么文件

admin admin 发表于2022-07-16 16:32:43 浏览118 评论0

抢沙发发表评论

java怎么用commons-fileupload实现上传文件

文件上传步骤:
     1. 导入jar包
          common-fileupload.jar
          common-io.jar      
     2. 上传jsp页面
         《body》
            《form action=“${pageContext.request.contextPath}/servlet/UploadHandleServlet“ enctype=“multipart/form-data“ method=“post“》
                上传用户:《input type=“text“ name=“username“》《br/》
                上传文件1:《input type=“file“ name=“file1“》《br/》
                上传文件2:《input type=“file“ name=“file2“》《br/》
                            《input type=“submit“ value=“提交“》
            《/form》
        《/body》    
     3. 消息提示页面(成功or失败)     
            《body》
                ${message}
            《/body》    
     4. 处理文件上传的servlet编写   
         import java.io.File;
         import java.io.FileOutputStream;
         import java.io.IOException;
         import java.io.InputStream;
         import java.util.List;
         import java.util.UUID;
             
             import javax.servlet.ServletException;
             import javax.servlet.
                  factory.setSizeThreshold(1024*100);//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB
                  //设置上传时生成的临时文件的保存目录
                  factory.setRepository(tmpFile);
                  //2、创建一个文件上传解析器
                  ServletFileUpload upload = new ServletFileUpload(factory);
                  //监听文件上传进度
                  upload.setProgressListener(new ProgressListener(){
                   public void update(long pBytesRead, long pContentLength, int arg2) {
                    System.out.println(“文件大小为:“ + pContentLength + “,当前已处理:“ + pBytesRead);
                    /**
                    * 文件大小为:14608,当前已处理:4096
                     文件大小为:14608,当前已处理:7367
                     文件大小为:14608,当前已处理:11419
                     文件大小为:14608,当前已处理:14608
                    */
                   }
                  });
                  //解决上传文件名的中文乱码
                  upload.setHeaderEncoding(“UTF-8“); 
                  //3、判断提交上来的数据是否是上传表单的数据
                  if(!ServletFileUpload.isMultipartContent(request)){
                   //按照传统方式获取数据
                   return;
                  }
                   
                  //设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB
                  upload.setFileSizeMax(1024*1024);
                  //设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB
                  upload.setSizeMax(1024*1024*10);
                  //4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List《FileItem》集合,每一个FileItem对应一个Form表单的输入项
                  List《FileItem》 list = upload.parseRequest(request);
                  for(FileItem item : list){
                   //如果fileitem中封装的是普通输入项的数据
                   if(item.isFormField()){
                    String name = item.getFieldName();
                    //解决普通输入项的数据的中文乱码问题
                    String value = item.getString(“UTF-8“);
                    //value = new String(value.getBytes(“iso8859-1“),“UTF-8“);
                    System.out.println(name + “=“ + value);
                   }else{//如果fileitem中封装的是上传文件
                    //得到上传的文件名称,
                    String filename = item.getName();
                    System.out.println(filename);
                    if(filename==null || filename.trim().equals(““)){
                     continue;
                    }
                    //注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如: c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
                    //处理获取到的上传文件的文件名的路径部分,只保留文件名部分
                    filename = filename.substring(filename.lastIndexOf(“\\“)+1);
                    //得到上传文件的扩展名
                    String fileExtName = filename.substring(filename.lastIndexOf(“.“)+1);
                    //如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法
                    System.out.println(“上传的文件的扩展名是:“+fileExtName);
                    //获取item中的上传文件的输入流
                    InputStream in = item.getInputStream();
                    //得到文件保存的名称
                    String saveFilename = makeFileName(filename);
                    //得到文件的保存目录
                    String realSavePath = makePath(saveFilename, savePath);
                    //创建一个文件输出流
                    FileOutputStream out = new FileOutputStream(realSavePath + “\\“ + saveFilename);
                   //创建一个缓冲区
                    byte buffer;
                    //判断输入流中的数据是否已经读完的标识        int len = 0;
                    //循环将输入流读入到缓冲区当中,(len=in.read(buffer))》0就表示in里面还有数据
                    while((len=in.read(buffer))》0){
                     //使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + “\\“ + filename)当中
                     out.write(buffer, 0, len);
                    }
                    //关闭输入流
                    in.close();
                    //关闭输出流
                    out.close();        //删除处理文件上传时生成的临时文件        //item.delete();        message = “文件上传成功!“;
                   }
                  }
                 }catch (FileUploadBase.FileSizeLimitExceededException e) {
                  e.printStackTrace();
                  request.setAttribute(“message“, “单个文件超出最大值!!!“);
                  request.getRequestDispatcher(“/message.jsp“).forward(request, response);
                  return;
                 }catch (FileUploadBase.SizeLimitExceededException e) {
                  e.printStackTrace();
                  request.setAttribute(“message“, “上传文件的总的大小超出限制的最大值!!!“);
                  request.getRequestDispatcher(“/message.jsp“).forward(request, response);
                  return;
                 }catch (Exception e) {
                  message= “文件上传失败!“;
                  e.printStackTrace();
                 }
                 request.setAttribute(“message“,message);
                 request.getRequestDispatcher(“/message.jsp“).forward(request, response);
              }
              private String makeFileName(String filename){ //2.jpg
               //为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
               return UUID.randomUUID().toString() + “_“ + filename;
              }  
             private String makePath(String filename,String savePath){
               //得到文件名的hashCode的值,得到的就是filename这个字符串对象在内存中的地址
               int hashcode = filename.hashCode();
               int dir1 = hashcode&0xf; //0--15
               int dir2 = (hashcode&0xf0)》》4; //0-15
               //构造新的保存目录
               String dir = savePath + “\\“ + dir1 + “\\“ + dir2; //upload\2\3 upload\3\5
               if(!file.exists()){
                file.mkdirs();
              }
               return dir;
              }
              
              public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
               doGet(request, response);
              }
             }
     5.编写web.xml文件(servlet的映射配置)   
            《servlet》
                《servlet-name》UploadHandleServlet《/servlet-name》
                《servlet-class》me.gacl.web.controller.UploadHandleServlet《/servlet-class》
            《/servlet》
             
            《servlet-mapping》
                《servlet-name》UploadHandleServlet《/servlet-name》
                《url-pattern》/servlet/UploadHandleServlet《/url-pattern》
            《/servlet-mapping》
 
 
 注: 网上看到的,出处找不到了,望见谅!!

Files是什么文件

文件是多个文件

文件,英语

n。DOS命令:设置同时打开的最大文件数量

名词文件的复数形式

文件,英语

n。文件;档案;文件;刀,指甲锉

VT。有...档案;提交(申请,提案等)

过去的公式:过去提取:现在提交的段:提交第三人称单曲:文件:文件

扩展信息:

文件同义词:文档,英语

n。文件;官方文件;文档

VT。记录;(文件等)证明

形容词:文档名词:记录员过去的公式:已记录过去的单词:立即记录:记录第三人称单个数字:文件

文件的基本含义是“证明”,它是指可以作为数据,权利证据,要求和竞争的来源提供的文件或合同的解释。

怎么写这个程序的Makefile文件


Makefile文件名字,放在这个你这个程序的目录中:
prog=app
OBJS=sin_value.o cos_value.o haha.o main.c
LDFLAGS:= #这个是编译参数例:-lpthread 线程库
CFLAGS:= -g -Wall #可调式,以及编译警告通知
all:$(prog)
sin_value.o:sin_value.c
$(CXX) $(CFLAGS) -c -o $@ $^
cos_value.o:cos_value.c
$(CXX) $(CFLAGS) -c -o $@ $^
haha.o: haha.c
$(CXX) $(CFLAGS) -c -o $@ $^
main.o:main.c
$(CXX) $(CFLAGS) -c -o $@ $^
install:
cp $(prog) /bin

clean:
rm -rf *.o *~
rm -rf $(prog)
rm -rf /bin/$(prog)
$(prog):$(OBJS)
$(CXX) $(LDFLAGS) -o $@ $^
-fileupload上传文件