乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      網(wǎng)上找的一個比較詳細的Struts2文件上傳的解說但在實際中還要注意一些問題 - Bill的日志 - 網(wǎng)易博客

       燮羽 2010-10-31

      網(wǎng)上找的一個比較詳細的Struts2文件上傳的解說但在實際中還要注意一些問題

      網(wǎng)頁相關(guān) 2010-04-04 14:26:34 閱讀80 評論0   字號:大中小 訂閱

      1.如果用到了spring的方法注入的話一定不要忘了加 scope="prototype"這樣每次訪問action時,都會新建一個action,否則的話,會記錄上傳action留下的記錄,出現(xiàn)意想不到的錯誤。

      2.上傳時出現(xiàn)的錯誤信息是放在request范圍內(nèi)的如果出現(xiàn)錯誤返回的input頁面不是上傳文件的form頁面那么可以把錯誤信息提取出來

      String error = this.getFieldErrors().get("file").toString();(file指struts2 file標簽里 name的名字)

      放在request,session。。范圍內(nèi)然后在input指定的頁面顯示錯誤信息。

      3.文件大小和類型的限制是通過Struts2攔截器實現(xiàn)的你只需要在上傳的action中做如下配置就可以

      <param name="allowedTypes">
            application/octet-stream,application/x-zip-compressed,image/bmp,image/png,image/gif,image/jpeg,image/jpg,image/x-png,
            image/pjpeg
       </param>
       <param name="maximumSize">5242880</param>

      但是有一點要注意Struts2默認文件上傳最大為2M即便你設(shè)置了<param name="maximumSize">5242880</param>

      當上傳的文件大于2M時候也會出錯的這時要設(shè)置另外一個常量<constant name="struts.multipart.maxSize" value="1000000000"/>

      要讓他的value設(shè)置的比你限定上傳最大值要大一點。

      以上是文件上傳要注意的幾點其實文件上傳看起來比較難實際上比較簡單,而文件下載就有點麻煩了遇到了很惱人的編碼和亂碼問題。

      1.文件下載的action和普通的action查不多僅僅是該Action需要提供一個返回InputStream流的方法

      public InputStream getInputStream() throws Exception
        
        Attachment attachment=attachmentManager.get(Long.valueOf(attachmentId));   
        File downFile=new File(attachment.getFilePath());   InputStream inStream = new FileInputStream(downFile);   
        return inStream;  
      }

      有一點要注意struts2提供了一個 ServletActionContext.getServletContext().getResourceAsStream(filePath);方 法根據(jù)路徑返回輸入流,但是這個方法和servletContext有關(guān),當你把下載的文件放在項目的根目錄中才可以否則會出錯的,最保險的辦法就是根據(jù) 文件路徑找到這個文件然后在轉(zhuǎn)化成輸入流返回。

      配置:

      <action name="download" class="attachmentAction"
         method="downloadAttachment">
         <result name="success" type="stream">
          <param name="bufferSize">2048</param> //輸入流緩沖的大小
          <param name="inputPath">inputStream</param>  //inputStream和getInputStream() 是對應(yīng)的
         </result>
        </action>

      2.編碼,當文件名是中文時

      String downFileName = new String(downFileName.getBytes("ISO8859-1"), "utf-8");

      getResponse().setHeader(
          "Content-Disposition",
          "attachment; filename="
            + java.net.URLEncoder.encode(downFileName, "UTF-8"));

      setHeader是設(shè)置http請求的頭是MIME 協(xié)議的拓展可以實現(xiàn)以下功能

      *希望某類或者某已知MIME 類型的文件(比如: .gif; .txt;*.htm)能夠在訪問時彈出"文件下載"對話框
      *希望以原始文件名(上傳時的文件名,例如:山東省政府1024號文件.doc)提供下載,但服務(wù)器上保存的地址卻是其他文件名(如:12519810948091234_asdf.doc)
      *希望某文件直接在瀏覽器上顯示而不是彈出文件下載對話框 上面的代碼實現(xiàn)了第一個功能。


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多