最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java使用common-fileupload實現(xiàn)文件上傳

 更新時間:2016年10月14日 16:35:58   作者:Bird  
這篇文章主要為大家詳細介紹了java使用common-fileupload實現(xiàn)文件上傳的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

文件上傳是網(wǎng)站非常常用的功能,直接使用Servlet獲取上傳文件還得解析請求參數(shù),比較麻煩,所以一般選擇采用apache的開源工具,common-fileupload.這個jar包可以再apache官網(wǎng)上面找到,也可以在struts的lib文件夾下面找到,struts上傳的功能就是基于這個實現(xiàn)的。

common-fileupload是依賴于common-io這個包的,所以還需要下載這個包。然后導入到你的項目路徑下面。

使用代碼如下

package oop.hg.ytu.servlet; 
 
import java.io.File; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.List; 
 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
 
import oop.hu.ytu.dao.UploadDomain; 
 
import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 
 
public class Upload extends HttpServlet { 
 
  /** 
   * 處理用戶上傳請求 
   */ 
  private static final long serialVersionUID = 1L; 
 
  public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
  // String describe = request.getParameter("describe"); 
    DiskFileItemFactory factory = new DiskFileItemFactory(); 
    @SuppressWarnings("deprecation") 
    String path = request.getRealPath("/upload");//設置磁盤緩沖路徑 
   
    factory.setRepository(new File(path)); 
    factory.setSizeThreshold(1024*1024);//設置創(chuàng)建緩沖大小 
     
    ServletFileUpload upload = new ServletFileUpload(factory); 
    upload.setSizeMax(-1);//設置上傳文件限制大小,-1無上限 
    try { 
      @SuppressWarnings("unchecked") 
      List<FileItem> list = upload.parseRequest(request); 
      String va = null; 
      for(FileItem item : list){ 
    //   String name = item.getFieldName(); 
        if(item.isFormField()){//判斷是否是文件流 
           
          va = item.getString("UTF-8"); 
        // System.out.println(name+"="+va); 
      ///   request.setAttribute(name, value); 
        }else{ 
          String value = item.getName();//會將完整路徑名傳過來 
          int start = value.lastIndexOf("\\"); 
          String fileName = value.substring(start+1); 
      //   request.setAttribute(name, fileName); 
          InputStream in = item.getInputStream(); 
          UploadDomain dao = new UploadDomain(); 
          //item.write(new File(realPath,fileName)); 
          int index = fileName.lastIndexOf("."); 
          String realFileName = fileName.substring(0,index); 
          String type = fileName.substring(index+1); 
          dao.insert(in, realFileName,type,va);//放入到數(shù)據(jù)庫中 
           
        } 
      } 
    } catch (Exception e) { 
       
      e.printStackTrace(); 
    } 
  } 
 
  public void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    doGet(request, response); 
 
  } 
 
}

 這里分別判斷是否是上傳的流或者表單里面的參數(shù),比如文本框提交信息,然后將他們插入到數(shù)據(jù)庫中。數(shù)據(jù)庫插入
代碼如下

package oop.hu.ytu.dao; 
 
import java.io.InputStream; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
 
import oop.hg.ytu.utils.JdbcUtils; 
 
/** 
 * 提供文件上傳支持 
 * @author Administrator 
 * 
 */ 
public class UploadDomain { 
  /** 
   * 將上傳的文件流放入到數(shù)據(jù)庫中 
   */ 
  public void insert(InputStream in, String fileName, String type,String describe) throws Exception{//向數(shù)據(jù)庫中寫入圖片  
    Connection conn = null;  
    PreparedStatement ps = null;  
    ResultSet rs = null;  
    System.out.println(describe); 
    try {  
      // 2.建立連接  
      conn = JdbcUtils.getConnection(); 
      // 3.創(chuàng)建語句  
      String sql = "insert into fileupload(file,filename,type,des) values (?,?,?,?)";  
      ps = conn.prepareStatement(sql);  
      ps.setBlob(1, in); 
      ps.setString(2, fileName); 
      ps.setString(3, type); 
      ps.setString(4, describe); 
      // 4.執(zhí)行語句  
      ps.executeUpdate();  
  
      in.close();  
  
      
    } finally {  
      JdbcUtils.free(rs, ps, conn);  
    }  
  }  
} 

可能會遇到數(shù)據(jù)庫默認問價大小限制,需要在mysql安裝目錄下面的my.ini下面更改如下配置,
[mysqld] 
max_allowed_packet=64M 

這樣就可以了。當然,注意編碼格式。上傳文件搞定。還有就是我的一個列名設置為describe,結果和Mysql保留字沖
突,出現(xiàn)無法插入信息現(xiàn)象,以后一定要注意。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot整合JavaMail郵件的兩種方式

    SpringBoot整合JavaMail郵件的兩種方式

    這篇文章主要介紹了SpringBoot整合JavaMail郵件的兩種方式,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 詳解MyBatis配置typeAliases的方法

    詳解MyBatis配置typeAliases的方法

    這篇文章主要介紹了詳解MyBatis配置typeAliases的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • java單鏈表使用總結

    java單鏈表使用總結

    這篇文章主要為大家詳細介紹了java單鏈表使用總結,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • java實現(xiàn)日歷窗口小程序

    java實現(xiàn)日歷窗口小程序

    這篇文章主要為大家詳細介紹了java實現(xiàn)日歷窗口小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 詳解mysql插入數(shù)據(jù)后返回自增ID的七種方法

    詳解mysql插入數(shù)據(jù)后返回自增ID的七種方法

    這篇文章主要介紹了詳解mysql插入數(shù)據(jù)后返回自增ID的七種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • JDBC插入數(shù)據(jù)返回數(shù)據(jù)主鍵代碼實例

    JDBC插入數(shù)據(jù)返回數(shù)據(jù)主鍵代碼實例

    這篇文章主要介紹了JDBC插入數(shù)據(jù)返回數(shù)據(jù)主鍵代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Java的JSTL標簽庫詳解

    Java的JSTL標簽庫詳解

    JSTL包含用于編寫和開發(fā)JSP頁面的一組標準標簽,它可以為用戶提供一個無腳本環(huán)境。在此環(huán)境中,用戶可以使用標簽編寫代碼,而無須使用Java腳本
    2023-05-05
  • SpringBoot如何優(yōu)雅的處理重復請求

    SpringBoot如何優(yōu)雅的處理重復請求

    對于一些用戶請求,在某些情況下是可能重復發(fā)送的,如果是查詢類操作并無大礙,但其中有些是涉及寫入操作的,一旦重復了,可能會導致很嚴重的后果,所以本文給大家介紹了SpringBoot優(yōu)雅的處理重復請求的方法,需要的朋友可以參考下
    2023-12-12
  • Spring Boot結合IDEA自帶Maven插件如何快速切換profile

    Spring Boot結合IDEA自帶Maven插件如何快速切換profile

    IDEA是目前 Java 開發(fā)者中使用最多的開發(fā)工具,它有著簡約的設計風格,強大的集成工具,便利的快捷鍵,這篇文章主要介紹了Spring Boot結合IDEA自帶Maven插件快速切換profile,需要的朋友可以參考下
    2023-03-03
  • ssm整合shiro使用詳解

    ssm整合shiro使用詳解

    這篇文章主要介紹了ssm整合shiro使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04

最新評論

安康市| 依兰县| 阳谷县| 成安县| 常熟市| 康保县| 永平县| 吴川市| 浙江省| 永登县| 荃湾区| 泰兴市| 纳雍县| 博乐市| 顺昌县| 乐清市| 新化县| 威信县| 柳河县| 哈巴河县| 漳州市| 东乡| 辽宁省| 二连浩特市| 喀喇| 博湖县| 凌海市| 阿尔山市| 响水县| 洪洞县| 楚雄市| 南汇区| 鄯善县| 虞城县| 丹阳市| 芦山县| 孟津县| 荃湾区| 锦州市| 东源县| 隆尧县|