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

首頁 > 編程 > Java > 正文

java使用common-fileupload實現文件上傳

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

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

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);//設置創建緩沖大小          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("http://");           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);//放入到數據庫中                    }       }     } catch (Exception e) {              e.printStackTrace();     }   }    public void doPost(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     doGet(request, response);    }  }

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

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 {   /**    * 將上傳的文件流放入到數據庫中    */   public void insert(InputStream in, String fileName, String type,String describe) throws Exception{//向數據庫中寫入圖片      Connection conn = null;      PreparedStatement ps = null;      ResultSet rs = null;      System.out.println(describe);     try {        // 2.建立連接        conn = JdbcUtils.getConnection();       // 3.創建語句        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.執行語句        ps.executeUpdate();          in.close();              } finally {        JdbcUtils.free(rs, ps, conn);      }    }  } 

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博罗县| 广宗县| 苏州市| 陆丰市| 阆中市| 维西| 清水县| 尼勒克县| 南通市| 朔州市| 方正县| 阿坝| 饶阳县| 弥勒县| 台北市| 河津市| 璧山县| 广宗县| 民权县| 溆浦县| 兴安盟| 白银市| 岗巴县| 高唐县| 邵武市| 达孜县| 乌兰察布市| 游戏| 杭州市| 枣庄市| 德兴市| 邵阳县| 仙居县| 大庆市| 宁城县| 镇康县| 黄冈市| 富阳市| 兴安盟| 常宁市| 延川县|