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

首頁 > 學院 > 開發設計 > 正文

Struts2文件上傳下載補充問題

2019-11-14 23:48:32
字體:
來源:轉載
供稿:網友
Struts2文件上傳下載補充問題

  上回書說到strust2的文件上傳下載,上次是把文件上傳上去了,然后傻傻的在數據庫中存入了一個絕對路徑,在本機上測試取圖片的時候各種好使,小小的嘚瑟了一下,覺得文件上傳下載不過如此嘛,但是今天,就在今天把項目打包成WAR包運行的時候各種找不到圖片,我呢個郁悶啊,開始還以為是打包的時候出問題了,但是又重新打包運行還是不行,后來去看數據庫才知道了是上傳路徑的問題,本機的tomcat是裝在d盤,但是打的war包運行的環境tomcat是裝在c盤,所以找不到路徑了,那么在顯示的時候肯定是有問題的:

  文件上傳的時候需要給出上傳路徑,這時候的路徑是絕對路徑,但是往數據庫中存的時候需要存相對路徑:

  

//得到工程保存圖片的路徑        String root = ServletActionContext.getServletContext().getRealPath("/ima");         File destFile = new File(root);         //如果不存在就創建         if (!destFile.exists()) {             destFile.mkdirs();            }         InputStream is = new FileInputStream(ima);         //把圖片寫入到上面設置的路徑里         OutputStream os = new FileOutputStream(destFile+ "http://"+imaFileName);         try {                byte[] b = new byte[1024];// 每次寫入的大小                int j = 0;                while ((j = is.read(b)) > 0) {                    os.write(b, 0, j);                }            } catch (Exception e) {                e.PRintStackTrace();            } finally {                is.close();                os.close();            }

上面代碼中的root是絕對路徑,絕對路徑是什么意思呢?比如說D:/Tomcat 6.0/webapps這就是一個絕對路徑,那什么是相對路徑呢?Tomcat 6.0/webapps就是一個相對路徑,切記相對路徑最前面是沒有斜線的哦。上傳文件時候是相對路徑,但是在存入數據庫中的時候卻要存入相對路徑,怎么辦?如下:

 String fileUrl="ima"+"http://"+imaFileName;         sysUser.setImgUrl(fileUrl);

這樣得到的就是一個相對路徑,中間的//是為了轉譯/。

  數據庫存入的相對路徑在下載文件的時候也是個麻煩,最少對我是個麻煩,因為下載的時候從數據庫查到的是相對路徑,你還需要把相對路徑還原成絕對路徑,不然這哥們兒不搭理你啊,你肯定取不到這個文件。

取文件跟路徑以前使用的都是request.getRealPath(path);但是這哥們兒現在不好使了,也不能說不好使了,就是老了該休息休息了,所以換新的來了,新的方法是:

request.getsession().getServletContext().getRealPath(path);

只需要把path換成你的相對路徑就可以找到這個文件了,然后下載的話就是一個I/O流的事了。

    String path=request.getSession().getServletContext().getRealPath("ima//"+imgName);                  File file = new File(path);        // 以流的形式下載文件。          InputStream fis = new BufferedInputStream(new FileInputStream(path));          byte[] buffer = new byte[fis.available()];          fis.read(buffer);          fis.close();          // 清空response          response.reset();          // 設置response的Header          response.setContentType("application/x-download");          response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(imgName,"utf-8"));          response.addHeader("Content-Length", "" + file.length());          OutputStream toClient = response.getOutputStream();          toClient.write(buffer);          toClient.flush();          toClient.close();

恩,暫時就這樣了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西乌| 湘西| 肇源县| 铁力市| 隆林| 儋州市| 镇平县| 滁州市| 腾冲县| 凉城县| 教育| 松原市| 茌平县| 大埔县| 乃东县| 汉沽区| 玉林市| 会东县| 阿拉尔市| 临澧县| 永胜县| 仙桃市| 阳新县| 栖霞市| 洛隆县| 株洲县| 历史| 西乌珠穆沁旗| 贵港市| 望都县| 长寿区| 乡宁县| 比如县| 塔城市| 庆安县| 太和县| 马边| 广水市| 邢台市| 康马县| 临湘市|