a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > JSP > 正文

servlet+JSP+mysql實現文件上傳的方法

2024-09-05 00:22:25
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了servlet+JSP+mysql實現文件上傳的方法,涉及JSP文件傳輸與判斷及數據庫操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
 

本文實例講述了servlet+JSP+mysql實現文件上傳的方法。分享給大家供大家參考,具體如下:

一、文件上傳的基本操作:

1、 表單屬性enctype的設置

multipart/form-data和application/x-www-form-urlencoded的區別

FORM元素的enctype屬性指定了表單數據向服務器提交時所采用的編碼類型,默認的缺省值是“application/x-www-form-urlencoded”。

然而,在向服務器發送大量的文本、包含非ASCII字符的文本或二進制數據時這種編碼方式效率很低。

在文件上載時,所使用的編碼類型應當是“multipart/form-data”,它既可以發送文本數據,也支持二進制數據上載。

Browser端<form>表單的ENCTYPE屬性值為multipart/form-data,它告訴我們傳輸的數據要用到多媒體傳輸協議,由于多媒體傳輸的都是大量的數據,所以規定上傳文件必須是post方法,<input>的type屬性必須是file。

實現過程:
 

  1. package cn.csdn.web.servlet; 
  2. import java.io.File; 
  3. import java.io.FileOutputStream; 
  4. import java.io.IOException; 
  5. import java.io.InputStream; 
  6. import java.sql.SQLException; 
  7. import java.util.List; 
  8. import java.util.UUID; 
  9. import javax.servlet.ServletException; 
  10. import javax.servlet.http.HttpServlet; 
  11. import javax.servlet.http.HttpServletRequest; 
  12. import javax.servlet.http.HttpServletResponse; 
  13. import javax.sql.DataSource; 
  14. import org.apache.commons.dbutils.QueryRunner; 
  15. import org.apache.commons.fileupload.FileItem; 
  16. import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException; 
  17. import org.apache.commons.fileupload.FileUploadException; 
  18. import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
  19. import org.apache.commons.fileupload.servlet.ServletFileUpload; 
  20. import cn.csdn.web.c3p0.DBManager_c3p0; 
  21. public class Upload2Servlet extends HttpServlet { 
  22. /** 
  23.  
  24. */ 
  25. private static final long serialVersionUID = 1L; 
  26. public void doGet(HttpServletRequest request, HttpServletResponse response) 
  27. throws ServletException, IOException { 
  28. doPost(request,response); 
  29. public void doPost(HttpServletRequest request, HttpServletResponse response) 
  30. throws ServletException, IOException { 
  31. request.setCharacterEncoding("UTF-8"); 
  32. try { 
  33. //實例化一個文件工廠  
  34. DiskFileItemFactory factory=new DiskFileItemFactory(); 
  35. factory.setRepository(new File("C://osp")); 
  36. String paramName=null
  37. String paramValue=null
  38. //配置上傳組件ServletFileUpload  
  39. ServletFileUpload upload=new ServletFileUpload(factory); 
  40. upload.setHeaderEncoding("UTF-8"); 
  41. upload.setFileSizeMax(1024*1024); 
  42. //從request得到所有上傳域的列表  
  43. List<FileItem> list=upload.parseRequest(request); 
  44. for(FileItem item:list){ 
  45. //如果是上傳域的文件域  
  46. if(item.isFormField()){ 
  47. //表單普通輸入項 
  48. paramName = item.getFieldName(); //上傳于的Name 
  49. // String paramValue=item.getString(); 
  50. // paramValue=new String(paramValue.getBytes("iso8859-1"),"UTF-8"); 
  51. paramValue=item.getString("UTF-8"); 
  52. System.out.println(paramName+"="+paramValue); 
  53. }else
  54. //上傳文件處理 
  55. String fileName = item.getName(); 
  56. fileName=fileName.substring(fileName.lastIndexOf("//")+1); //截取擴展名  
  57. System.out.println("name="+fileName); 
  58. if(!fileName.equals("")){ 
  59. // fileName=refactorFileName(fileName); 
  60. InputStream in=item.getInputStream(); 
  61. File file = new File("c://"+fileName); 
  62. FileOutputStream os=new FileOutputStream(file); 
  63. byte[] buf = new byte[1024]; 
  64. int len=0; 
  65. while((len=in.read(buf))>0){ 
  66. os.write(buf,0,len); 
  67. os.flush(); 
  68. os.close(); 
  69. in.close(); 
  70. item.delete(); 
  71. request.setAttribute("message""文件上傳成功"); 
  72. try { 
  73. DataSource ds = DBManager_c3p0.getDataSource(); 
  74. QueryRunner runner = new QueryRunner(ds); 
  75. String sql = "insert into user(name,file) values(?,?)"
  76. Object[] params = {paramValue,fileName}; 
  77. runner.update(sql, params); 
  78. catch (SQLException e) { 
  79. // TODO Auto-generated catch block 
  80. e.printStackTrace(); 
  81. catch(FileSizeLimitExceededException e1){ 
  82. e1.printStackTrace(); 
  83. request.setAttribute("message""文件尺寸太大"); 
  84. }catch (FileUploadException e) { 
  85. // TODO Auto-generated catch block 
  86. e.printStackTrace(); 
  87. request.setAttribute("message""文件上傳失敗"); 
  88. request.getRequestDispatcher("/message.jsp").forward(request, response); 
  89. // public String refactorFileName(String fileName){ 
  90. // return UUID.randomUUID().toString()+"_"+fileName; 
  91. // } 
?
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久国产视频网站 | 精品久久久久久久久久 | 日韩欧美国产一区二区三区 | 亚洲精品一区二区三区在线 | av成人在线观看 | 污网站在线免费 | 免费在线一区二区 | 日本免费一区二区视频 | 国产精品一区二区免费 | 2021最新热播中文字幕-第1页-看片视频 亚洲第一男人天堂 | 国产区免费视频 | 超碰人人干人人 | 久久成人免费视频 | 亚洲电影在线观看 | 成人免费一区二区三区视频网站 | 久久成人精品 | 黄网站涩免费蜜桃网站 | 欧美一区二区视频在线 | 精品久久一区二区三区 | 毛片在线视频 | 国产在线精品一区二区 | 国产午夜精品美女视频明星a级 | 99久久99久久 | 欧美精品一区二区三区一线天视频 | 午夜视频在线观看网站 | 在线观看国产视频 | 看一级黄色大片 | 亚洲电影一区二区三区 | 欧美久久久久久 | 综合一区二区三区 | 日韩电影中文字幕 | 高清国产一区 | 久久777| 国产一二三区在线观看 | 亚洲永久免费 | 在线黄av| 亚洲精品视频一区二区三区 | 国产精品美腿一区在线看 | 日韩精品资源 | 日本精品在线视频 | 99在线免费视频 |