麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JSP > 正文

servlet+JSP+mysql實(shí)現(xiàn)文件上傳的方法

2024-09-05 00:22:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了servlet+JSP+mysql實(shí)現(xiàn)文件上傳的方法,涉及JSP文件傳輸與判斷及數(shù)據(jù)庫(kù)操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
 

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

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

1、 表單屬性enctype的設(shè)置

multipart/form-data和application/x-www-form-urlencoded的區(qū)別

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

然而,在向服務(wù)器發(fā)送大量的文本、包含非ASCII字符的文本或二進(jìn)制數(shù)據(jù)時(shí)這種編碼方式效率很低。

在文件上載時(shí),所使用的編碼類型應(yīng)當(dāng)是“multipart/form-data”,它既可以發(fā)送文本數(shù)據(jù),也支持二進(jìn)制數(shù)據(jù)上載。

Browser端<form>表單的ENCTYPE屬性值為multipart/form-data,它告訴我們傳輸?shù)臄?shù)據(jù)要用到多媒體傳輸協(xié)議,由于多媒體傳輸?shù)亩际谴罅康臄?shù)據(jù),所以規(guī)定上傳文件必須是post方法,<input>的type屬性必須是file。

實(shí)現(xiàn)過(guò)程:
 

  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. //實(shí)例化一個(gè)文件工廠  
  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. //表單普通輸入項(xiàng) 
  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); //截取擴(kuò)展名  
  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. // } 
?
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久久久久高清 | 永久免费黄色大片 | 娇妻被各种姿势c到高潮小说 | 国产亚洲精品综合一区 | a网在线 | 黄色男女视频 | 久久综合久久综合久久 | 久久久久久久久国产 | 一级做a爱片性色毛片 | 性欧美xxxx极品摘花 | 精国品产一区二区三区有限公司 | 欧美大逼网 | 亚洲一级毛片 | 欧美三级日本三级少妇99 | 日韩视频一区二区三区在线观看 | 看全色黄大色黄大片女图片 | 国产精品久久久久影院老司 | 一区二区三区日韩电影 | 国产1级视频| 欧美成人视 | 久啪视频| 国产亚洲精品成人a | 日本中文一级片 | 久久精品视频亚洲 | 粉色视频污 | 成年免费网站 | 在线观看视频毛片 | 日韩视频一区二区在线观看 | 日本在线免费观看视频 | 欧美性色大片 | 毛片视频网址 | 日本成年免费网站 | 久久精品国产精品亚洲 | 精品国产一区二区三区四区阿崩 | 欧洲狠狠鲁 | 欧日韩在线视频 | 成人污在线 | 久久91久久久久麻豆精品 | 一区二区三区欧美在线 | 精品国产一区二区在线 | 成人羞羞视频在线观看 |