国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java web圖片上傳和文件上傳實例

2019-11-26 13:32:10
字體:
來源:轉載
供稿:網友

圖片上傳和文件上傳本質上是一樣的,圖片本身也是文件。文件上傳就是將圖片上傳到服務器,方式雖然有很多,但底層的實現都是文件的讀寫操作。

注意事項

1.form表單一定要寫屬性enctype="multipart/form-data"

2.為了能保證文件能上傳成功file控件的name屬性值要和你提交的控制層變量名一致,

例如空間名是file那么你要在后臺這樣定義

private File file; //file控件名private String fileContentType;//圖片類型private String fileFileName; //文件名

1.jsp頁面

<%@ page language="java" contentType="text/html; charset=UTF-8"   pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="pragma" content="no-cache" /> <base target="_self"> <title>文件上傳</title> </head><body><form method="post" action="" enctype="multipart/form-data"><input type="file" name="file" value="file"><input type="submit" value="確定"></form></body></html>

1.頁面數據需要提交的Controller

package com.cpsec.tang.chemical.action;import java.io.File;import java.io.IOException;import java.util.Random;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import org.apache.commons.io.FileUtils;import org.apache.struts2.ServletActionContext;import org.springframework.stereotype.Controller;import com.cpsec.tang.chemical.biz.LunboBiz;import com.cpsec.tang.chemical.entity.Image;import com.opensymphony.xwork2.ActionSupport;@Controller("lunboAction")public class LunboAction extends ActionSupport {  /**   *    */  private static final long serialVersionUID = 1L;  @Resource(name="lunboBiz")  private LunboBiz lunboBiz;  private Image image;  private File file; //file控件名  private String fileContentType;//圖片類型  private String fileFileName; //文件名  private Integer number;    public String findImage(){    image=lunboBiz.findImage();    return SUCCESS;  }    public String alterImage(){    image=lunboBiz.findImage();    return SUCCESS;  }    public String alterImage1(){    HttpServletRequest request = ServletActionContext.getRequest();    String root = request.getRealPath("/upload");//圖片要上傳到的服務器路徑    String names[]=fileFileName.split("http://.");    String fileName="";    if(names.length>=1){      fileName=getRandomString(20)+"."+names[names.length-1];    }    String picPath="upload/"+fileName;//圖片保存到數據庫的路徑    File file1=new File(root);    try {      FileUtils.copyFile(file, new File(file1,fileName));      }    } catch (IOException e) {      e.printStackTrace();    }    return SUCCESS;  }    /*獲取一條隨機字符串*/  public String getRandomString(int length) { //length表示生成字符串的長度     String base = "abcdefghijklmnopqrstuvwxyz0123456789";       Random random = new Random();       StringBuffer sb = new StringBuffer();       for (int i = 0; i < length; i++) {         int number = random.nextInt(base.length());         sb.append(base.charAt(number));       }       return sb.toString();      }  }

這是通過復制的方式上傳文件,還有其他方式

方法二

@Controller("contractAction")public class ContractAction extends ActionSupport {    private final static String UPLOADDIR = "/files";//文件上傳的路徑,在webContent下建立  private File file; //input控件名一定為file   //上傳文件名集合    private String fileFileName;    //上傳文件內容類型集合    private String fileContentType;     private String filename;   public String upload() throws FileNotFoundException, IOException{    String path=uploadFile();//文件保存數據庫的路徑      return SUCCESS;  }    //執行上傳功能    @SuppressWarnings("deprecation")  public String uploadFile() throws FileNotFoundException, IOException {      try {        InputStream in = new FileInputStream(file);        String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR);       File fileLocation = new File(dir);       //此處也可以在應用根目錄手動建立目標上傳目錄       if(!fileLocation.exists()){         boolean isCreated = fileLocation.mkdir();         if(!isCreated) {           //目標上傳目錄創建失敗,可做其他處理,例如拋出自定義異常等,一般應該不會出現這種情況。           return null;         }       }      // this.setFileFileName(getRandomString(20));      String[] Name=this.getFileFileName().split("http://.");      String fileName=getRandomString(20)+"."+Name[Name.length-1];      this.setFileFileName(fileName);      System.out.println(fileName);      File uploadFile = new File(dir, fileName);      OutputStream out = new FileOutputStream(uploadFile);        byte[] buffer = new byte[1024 * 1024];        int length;        while ((length = in.read(buffer)) > 0) {          out.write(buffer, 0, length);        }      in.close();        out.close();        return UPLOADDIR.substring(1)+"http://"+fileFileName;      } catch (FileNotFoundException ex) {        return null;        } catch (IOException ex) {        return null;      }    }      public static String getRandomString(int length){    String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";    Random random=new Random();    StringBuffer sb=new StringBuffer();    for(int i=0;i<length;i++){     int number=random.nextInt(62);     sb.append(str.charAt(number));    }    return sb.toString();  }  }

除了單圖上傳還有多圖上傳,原理都是一樣的

package com.cpsec.tang.chemical.action;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;import java.util.List;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;/** * 多文件上傳 */public class FilesUploadAction extends ActionSupport {     //上傳文件存放路徑       private final static String UPLOADDIR = "/upload";       //上傳文件集合       private List<File> file;       //上傳文件名集合       private List<String> fileFileName;       //上傳文件內容類型集合       private List<String> fileContentType;            public List<File> getFile() {         return file;       }        public void setFile(List<File> file) {         this.file = file;       }       public List<String> getFileFileName() {        return fileFileName;      }        public void setFileFileName(List<String> fileFileName) {         this.fileFileName = fileFileName;       }        public List<String> getFileContentType() {         return fileContentType;       }        public void setFileContentType(List<String> fileContentType) {         this.fileContentType = fileContentType;       }             public String uploadform() throws Exception {       HttpServletRequest request = ServletActionContext.getRequest();       String webpath=null;//上傳路徑       for (int i = 0; i < file.size(); i++) {           //循環上傳每個文件           uploadFile(i);          webpath="upload/"+this.getFileFileName().get(i);       }       return "SUCCESS";     }             //執行上傳功能       private String uploadFile(int i) throws FileNotFoundException, IOException {         try {                    InputStream in = new FileInputStream(file.get(i));           String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR);          File fileLocation = new File(dir);          //此處也可以在應用根目錄手動建立目標上傳目錄          if(!fileLocation.exists()){            boolean isCreated = fileLocation.mkdir();            if(!isCreated) {              //目標上傳目錄創建失敗,可做其他處理,例如拋出自定義異常等,一般應該不會出現這種情況。              return null;            }          }          String fileName=this.getFileFileName().get(i);          File uploadFile = new File(dir, fileName);         OutputStream out = new FileOutputStream(uploadFile);           byte[] buffer = new byte[1024 * 1024];           int length;           while ((length = in.read(buffer)) > 0) {             out.write(buffer, 0, length);           }         in.close();           out.close();           return uploadFile.toString();       } catch (FileNotFoundException ex) {         return null;         } catch (IOException ex) {         return null;         }       }   }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大庆市| 白水县| 桂林市| 航空| 绵阳市| 沂水县| 泽库县| 固镇县| 五原县| 澜沧| 连云港市| 商洛市| 闸北区| 正镶白旗| 同德县| 新丰县| 白水县| 赤水市| 福鼎市| 东城区| 玉山县| 洛南县| 正镶白旗| 延津县| 桂林市| 仁寿县| 长白| 库车县| 自贡市| 武强县| 行唐县| 金秀| 卫辉市| 嘉兴市| 故城县| 玉山县| 浮梁县| 灵璧县| 江永县| 恩施市| 醴陵市|