jsp富文本圖片和數據上傳


好記性不如爛筆頭,記錄一下。

2016的最后一天,以一篇博客結尾迎接新的一年。

此處用的富文本編輯器是wangEditor,一款開源的輕量級的富文本編輯器,這里着重說一下里面的圖片上傳功能。

服務器端接收圖片用到了兩個jar包,分別是commons-fileupload和commons-io。

下載下來之后./test/test-uploadfn.html,打開該文件,找到下面這行代碼。

1 editor.config.uploadImgUrl = '/wangEditor/Upload';  //等號后面寫上你上傳的后台路徑,這里是我的路徑

接下來是對服務器端的操作,這里用一個Servlet做演示,新建一個Servlet,在Post里面寫上對處理前端上傳圖片請求得代碼,如下。

 1 public void doPost(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3         response.setContentType("text/html;charset=utf-8");
 4         request.setCharacterEncoding("utf-8");
 5         
 6         DiskFileItemFactory factory = new DiskFileItemFactory();  //解析器的配置信息
 7         
 8         ServletFileUpload upload = new ServletFileUpload(factory);    //解析器的實例化對象
 9         
10         String fileName = String.valueOf(new Date().getTime() + ".jpg"); //取得一個唯一的圖片名稱
11         
12         //我將fileName寫在這個位置,而沒有寫在下面的for循環當中,是因為當我傳圖片時,一張圖片,從前台會提交兩次請求,
13         //如果寫在for里面會導致我分成兩張圖片保存,造成的后果就是圖片格式不正確,所以我寫在這里。
14         //這個demo在這個地方也就被限定了,只能進行一次上傳一張圖片的操作
15         
16         try {
17             ArrayList<FileItem> files = (ArrayList<FileItem>) upload.parseRequest(request);
18             
19             for(FileItem item : files) {
20                 
21                 InputStream is = item.getInputStream();  //這里得到圖片對象的輸流,我將在下文中寫入文件中
22                 
23                 ServletContext context = getServletContext();
24                 
25                 String Path = context.getRealPath("/upload"); //存放圖片的目錄
26                 
27                 File pic_file = new File(Path);
28                 
29                 if(!pic_file.exists() || !pic_file.isDirectory()) { //不存在或者不是目錄就創建文件夾
30                     pic_file.mkdir();
31                 }
32                 
33                 pic_file = new File(Path+"/"+fileName);
34                 
35                 FileOutputStream out = new FileOutputStream(pic_file);  //准備寫入文件的輸出流
36                 
37                 //建立緩沖區數組
38                 byte[] buffer = new byte[1024];
39                 
40                 //緩沖區數組的長度定義,當IO從流中獲取不到數據的時候,返回值為-1
41                 int len = -1;
42                 
43                 //循環寫入文件
44                 while((len = is.read(buffer)) > -1) {
45                     out.write(buffer,0,len);
46                 }
47                 
48                 is.close();
49                 
50                 out.close();
51                 
52                 item.delete();
53                 
54                 response.getWriter().print("/wangEditor/upload/"+fileName);
55                 
56             }
57             
58         } catch (FileUploadException e) {
59             e.printStackTrace();
60         }
61         
62     }

這樣一個簡單的傳圖demo就做好了。

示例圖:

打開test-uploadfn.html。

開始點擊上傳圖片到upload文件夾下。

選擇圖片完成之后,如下圖所示。

我傳了一張大圖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM