zoukankan      html  css  js  c++  java
  • JavaWeb实现文件上传功能

    文件上传需要2个包:

    commons-io:下载

    commons-fileupload:下载

    前端的jsp页面  

    注意:文件上传的type=file 是以表单的显示进行提交的  必须要有这句  

    enctype="multipart/form-data"
     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10 <form action="register.do" enctype="multipart/form-data" method="post">
    11 <input type="file" name="pic"/>//文件上传框
    12 <input type="submit"/>//提交按钮 
    13 </form>
    14 </body>
    15 </html>

    写一个serlvet  servlert需要与前台表单提交的地址一致

     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                         FileOutputStream out=new FileOutputStream(f);
    50                         byte[] b= new byte[1024];
    51                         int len;
    52                         while((len=in.read(b))>-1){
    53                             out.write(b,0,len);
    54                         }
    55                         out.close();
    56                         in.close();
    57                     }else {
    58                         System.out.println("文件传入错误!");
    59                     }
    60                 }
    61             }
    62         } catch (FileUploadException e) {
    63             
    64             e.printStackTrace();
    65         }
    66         
    67     }
    68 
    69 
    70     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    71         doGet(request, response);
    72     }
    73 
    74 }
  • 相关阅读:
    由当前acitivty直接退到桌面
    Android中SharedPreference多进程数据共享出错
    java回调机制
    Android 监听apk安装替换卸载广播
    jquery中如何退出each循环
    旋转六面体源码
    用CSS3制作的旋转六面体动画
    CSS中常用的字体单位:px、em、rem和%的区别
    css属性简写集合
    小游戏--别踩白块
  • 原文地址:https://www.cnblogs.com/xyhghy/p/14854029.html
Copyright © 2011-2022 走看看