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

首頁 > 編程 > Java > 正文

java web圖片上傳和文件上傳實(shí)例詳解

2019-11-26 13:32:28
字體:
供稿:網(wǎng)友

java web圖片上傳和文件上傳

圖片上傳和文件上傳本質(zhì)上是一樣的,圖片本身也是文件。文件上傳就是將圖片上傳到服務(wù)器,方式雖然有很多,但底層的實(shí)現(xiàn)都是文件的讀寫操作。

注意事項(xiàng)

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.頁面數(shù)據(jù)需要提交的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");//圖片要上傳到的服務(wù)器路徑    String names[]=fileFileName.split("http://.");    String fileName="";    if(names.length>=1){      fileName=getRandomString(20)+"."+names[names.length-1];    }    String picPath="upload/"+fileName;//圖片保存到數(shù)據(jù)庫的路徑    File file1=new File(root);    try {      FileUtils.copyFile(file, new File(file1,fileName));      }    } catch (IOException e) {      e.printStackTrace();    }    return SUCCESS;  }    /*獲取一條隨機(jī)字符串*/  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();      }  }

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

方法二

@Controller("contractAction")public class ContractAction extends ActionSupport {    private final static String UPLOADDIR = "/files";//文件上傳的路徑,在webContent下建立  private File file; //input控件名一定為file   //上傳文件名集合    private String fileFileName;    //上傳文件內(nèi)容類型集合    private String fileContentType;     private String filename;   public String upload() throws FileNotFoundException, IOException{    String path=uploadFile();//文件保存數(shù)據(jù)庫的路徑      return SUCCESS;  }    //執(zhí)行上傳功能    @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);       //此處也可以在應(yīng)用根目錄手動建立目標(biāo)上傳目錄       if(!fileLocation.exists()){         boolean isCreated = fileLocation.mkdir();         if(!isCreated) {           //目標(biāo)上傳目錄創(chuàng)建失敗,可做其他處理,例如拋出自定義異常等,一般應(yīng)該不會出現(xiàn)這種情況。           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;       //上傳文件內(nèi)容類型集合       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++) {           //循環(huán)上傳每個文件           uploadFile(i);          webpath="upload/"+this.getFileFileName().get(i);       }       return "SUCCESS";     }             //執(zhí)行上傳功能       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);          //此處也可以在應(yīng)用根目錄手動建立目標(biāo)上傳目錄          if(!fileLocation.exists()){            boolean isCreated = fileLocation.mkdir();            if(!isCreated) {              //目標(biāo)上傳目錄創(chuàng)建失敗,可做其他處理,例如拋出自定義異常等,一般應(yīng)該不會出現(xiàn)這種情況。              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;         }       }   }

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 云南省| 平顶山市| 常宁市| 中山市| 中方县| 久治县| 哈巴河县| 沅江市| 耿马| 长顺县| 呼伦贝尔市| 汝州市| 凤冈县| 台北县| 鹤岗市| 杭州市| 晋江市| 马公市| 易门县| 林口县| 南阳市| 甘泉县| 榆林市| 呈贡县| 南安市| 丽江市| 鹤岗市| 商水县| 抚州市| 沁水县| 屯留县| 庐江县| 龙山县| 启东市| 怀宁县| 建德市| 闸北区| 巫溪县| 龙陵县| 乐业县| 汕头市|