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

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

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

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

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

使用代碼如下

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");//設(shè)置磁盤緩沖路徑 
   
    factory.setRepository(new File(path)); 
    factory.setSizeThreshold(1024*1024);//設(shè)置創(chuàng)建緩沖大小 
     
    ServletFileUpload upload = new ServletFileUpload(factory); 
    upload.setSizeMax(-1);//設(shè)置上傳文件限制大小,-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ù)庫默認(rèn)問價大小限制,需要在mysql安裝目錄下面的my.ini下面更改如下配置,
[mysqld] 
max_allowed_packet=64M 

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

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

相關(guān)文章

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

    SpringBoot整合JavaMail郵件的兩種方式

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

    詳解MyBatis配置typeAliases的方法

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

    java單鏈表使用總結(jié)

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

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

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

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

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

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

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

    Java的JSTL標(biāo)簽庫詳解

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

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

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

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

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

    ssm整合shiro使用詳解

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

最新評論

新泰市| 梓潼县| 平和县| 临洮县| 辽中县| 平南县| 无极县| 英德市| 榆中县| 菏泽市| 元阳县| 龙口市| 淳化县| 丰县| 台湾省| 土默特右旗| 宁波市| 英吉沙县| 广饶县| 美姑县| 吉隆县| 金塔县| 青田县| 防城港市| 定安县| 南川市| 竹山县| 顺昌县| 井冈山市| 彭泽县| 新河县| 云梦县| 仙居县| 平利县| 辽中县| 珠海市| 游戏| 瓮安县| 宁德市| 全州县| 林西县|