圖片上傳

fileTag.jsp

 

<s:form action="uploadaction" method="post" enctype="multipart/form-data" >

   <s:file label="上傳" theme="simple" name="upload"/>

   <s:submit value="上傳"/>

</s:form>

 

struts.xml

 

<action name="uploadaction" class="com.butone.struts2.taguser.UploadAction" method="upload">

       <!-- 配置fileUpload的攔截器 -->  

                 <interceptor-ref name="fileUpload">  

                            <!-- 配置允許上傳的文件類型 -->  

                   <param name="allowedTypes">  

                      image/bmp,image/png,image/gif,image/jpeg,image/jpg,application/msword,text/plain  

                   </param>  

                            <!-- 配置允許上傳的文件大小 -->  

                   <param name="maximumSize">2000000000</param>  

                 </interceptor-ref>  

                 <interceptor-ref name="defaultStack" />  

   <result>/taguser/result_fileTag.jsp</result>

   <result name="input">/taguser/fileTag.jsp</result>

  </action>

 

UploadAction.java

 

public class UploadAction extends ActionSupport {

 // 封裝單個上傳文件域的屬性

 private File upload;

 // 封裝單個上傳文件類型的屬性

 private String uploadContentType;

 // 封裝單個上傳文件名的屬性

 private String uploadFileName;

 // 動態設置上傳文件保存地址

 private String savePath;

 public String getSavePath() {

  // return ServletActionContext.getRequest().getRealPath("");

  String onload = "C:\\report\\cached\\";

  HttpServletRequest request = ServletActionContext.getRequest();

  request.setAttribute("onload", onload);

  // return ServletActionContext.getRequest().getContextPath();

  return onload;

 }

 public void setSavePath(String savePath) {

  this.savePath = savePath;

 }

 // 上傳單個文件的文件類型的setter和getter方法

 public void setUploadContentType(String uploadContentType) {

  this.uploadContentType = uploadContentType;

 }

 public String getUploadContentType() {

  return (this.uploadContentType);

 }

 // 上傳單個文件的文件名的setter和getter方法

 public void setUploadFileName(String uploadFileName) {

  this.uploadFileName = uploadFileName;

 }

 public String getUploadFileName() {

  return (this.uploadFileName);

 }

 public File getUpload() {

  return upload;

 }

 public void setUpload(File upload) {

  this.upload = upload;

  // savePath = ServletActionContext .getRequest().getRealPath("");

 }

 // 上傳單個文件

 public String upload() {

  try {

   // 以服務器的文件保存地址和原文件名建立上傳文件輸出流

   System.out.println(ServletActionContext

     .getRequest().getRealPath("")

     + File.separator

     + "images"

     + File.separator

     + getUploadFileName()+"路徑");

   FileOutputStream fos = new FileOutputStream(ServletActionContext

     .getRequest().getRealPath("")

     + File.separator

     + "images"

     + File.separator

     + getUploadFileName());

   // 以上傳文件建立一個文件上傳流

   FileInputStream fis = new FileInputStream(getUpload());

   // 將上傳文件的內容寫入服務器

   byte[] buffer = new byte[1024];

   int len = 0;

   while ((len = fis.read(buffer)) > 0) {

    fos.write(buffer, 0, len);

   }

  } catch (Exception e) {

   e.printStackTrace();

  }

  return SUCCESS;

 }

}

result_fileTag.jsp

 

       文件路徑:<s:property value="savePath" />/images/<br>

               <s:property value="#request.onload" /> <br>

               <img src="<s:property value='#request.onload'/>\0010.jpg.gif">

       <!-- 根據上傳文件的文件名,在頁面上顯示上傳的圖片 -->  

         文件爲:<s:property value="uploadFileName"/><br>

 

 

上傳多個文件

fileuploads.jsp

 

<s:fielderror></s:fielderror>

                <!--  <input type="button" onclick="addComponent();" value="在上傳一個" name="button" />  -->

                <br />

                <s:form action="uploadactions"  method="post" enctype="multipart/form-data">

                         <s:file name="upload" label="路徑"/>

                         <s:file name="upload" label="路徑"/>

                         <s:file name="upload" label="路徑"/>

                        <s:submit value="上傳"/>

                </s:form>

 

struts.xml

 

<action name="uploadactions" class="com.butone.struts2.taguser.UploadActions" method="upload">

       <!-- 配置fileUpload的攔截器 -->  

            <interceptor-ref name="fileUpload">  

                <!-- 配置允許上傳的文件類型 -->  

                <param name="allowedTypes">  

                    image/bmp,image/png,image/gif,image/jpeg,image/pjpeg,image/jpg,application/msword,text/plain

                </param>  

                <!-- 配置允許上傳的文件大小 -->  

                <!-- <param name="maximumSize">2000000000</param>  -->  

            </interceptor-ref>  

            <interceptor-ref name="defaultStack" />  

   <result>/taguser/fileuploadoutput.jsp</result>

   <result name="input">/taguser/fileuploads.jsp</result>

  </action>

 

UploadActions.java

 

public class UploadActions extends ActionSupport {

 

 //封裝多個上傳文件域的屬性  

    private List<File> upload = new ArrayList<File>();  

    // 封裝多個上傳文件類型的屬性  

    private List<String> uploadContentType = new ArrayList<String>();  

    // 封裝多個上傳文件名的屬性  

    private List<String> uploadFileName = new ArrayList<String>();  

      

    //動態設置上傳文件保存地址  

    private String savePath;  

      

    public String getSavePath() {

     System.out.println("getSavePath()!!!!!");

     

     System.out.println(savePath+"++++++++++++++++++++++++++++++");

        return savePath;  

    }  

 

    public void setSavePath(String savePath) {

     System.out.println("setSavePath()!!!!!");

        this.savePath = savePath;

       // savePath = "E:\\butone\\struts2.2\\WebRoot\\images\\"+getUploadFileName();

    }    

 

    //上傳多個文件對應文件內容的setter和getter方法  

    public List<File> getUpload() {  

        return upload;  

    }  

    public void setUpload(List<File> upload) {

     System.out.println("----------------    setUpload(List<File> upload)     ----------------");

        this.upload = upload;  

    }  

      

    //  上傳多個文件的文件類型setter和getter方法   

    public List<String> getUploadContentType() {  

        return uploadContentType;  

    }  

    public void setUploadContentType(List<String> uploadContentType) {  

        this.uploadContentType = uploadContentType;  

    }  

 

    // 上傳多個文件的文件名的setter和getter方法   

    public List<String> getUploadFileName() {  

        return uploadFileName;  

    }  

    public void setUploadFileName(List<String> uploadFileName) {  

        this.uploadFileName = uploadFileName;  

    }  

 

    public String upload() {  

     

     //savePath = "E:\\butone\\struts2.2\\WebRoot\\images\\";

     savePath = ServletActionContext.getRequest().getRealPath("");

     

     System.out.println("upload()!!!!!");

        //上傳多個文件  

        List<File> files = getUpload();  

        // String ext ="";  

        FileOutputStream fos = null;  

        FileInputStream fis = null;  

        byte[] buffer = new byte[1024];  

        int len = 0;  

        Random rd = new Random();  

        System.out.println(files.size()+"               ----------------");

        System.out.println(getSavePath());

        for (int i = 0; i < files.size(); i++) {  

            try {  

                //以服務器的文件保存地址和當前時間組合文件名建立上傳文件輸出流  

                // ext =uploadFileName.get(i).substring(uploadFileName.get(i).lastIndexOf('.'));  

                 /* fos = new FileOutputStream(getSavePath()+ File.separator+ 

                 * DateFormatUtil.getCurrentCustomFormatDateTime(DateFormatUtil.DATE_TIME_FORMAT_14) + 

                 * String.valueOf(rd.nextInt(1000))+ext); 

                 */ 

             System.out.println(getSavePath()+"------------------------getsavepath!!!");

                fos = new FileOutputStream(getSavePath() + File.separator  

                        + uploadFileName.get(i));  

                // 以上傳文件建立一個文件上傳流  

                fis = new FileInputStream(files.get(i));  

                // 將上傳文件的內容寫入服務器  

                len = 0;  

                while ((len = fis.read(buffer)) > 0) {  

                    fos.write(buffer, 0, len);  

                }  

            } catch (Exception e) {  

                e.printStackTrace();  

            }  

        }  

         return SUCCESS;  

    }  

}

fileuploadoutput.jsp

 

<!-- 輸出上傳的表單裏的文件標題屬性 -->  

         文件路徑:<s:property value="savePath" /><br>

               <s:property value="#request.onload" /> <br>

       <!-- 根據上傳文件的文件名,在頁面上顯示上傳的圖片 -->  

         文件爲:<s:property value="uploadFileName"/><br> 

        

        <s:iterator value="uploadFileName">

         <img src="<s:property />" />

         <!-- 就是爲了打印圖片名稱,但好像不支持中文圖片的 -->

         <s:property/>

        </s:iterator>

發佈了5 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章