javaweb中struts的圖片上傳

圖片上傳我給他分3部分:

第一部分是jsp頁面: 

<form action="advertise_advertiseSave.action" method="post"  name="form" enctype="multipart/form-data"

<tr>

<td nowrap align="right" width="6%">廣告附圖:</td>
  <td width="34%">                                          
  <input name="fileUpload" type="file"  id="advertisePic" style="width:200px" title="廣告附圖" value="選擇" />
</td>

</tr>

</form>


第二部分是工具部分(即最關鍵的圖片上傳的代碼)

/**
 *
 */
package com.wyp.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;


import org.apache.struts2.ServletActionContext;

/**
 * @author Wyp
 *
 */
public class PictureUpload {
    DateFormat df = new SimpleDateFormat("yyyyMMdd-hh-mm-ss-");
    String questionTime = df.format(new Date());
    HttpServletRequest request = ServletActionContext.getRequest();

    public String PicUpload(File fileUpload, String fileUploadFileName,
            String fileUploadContentType, String savePath) throws Exception {
        // 以服務器的文件保存地址和原文件名建立上傳文件輸出流
        FileOutputStream fos = new FileOutputStream(ServletActionContext
                .getRequest().getRealPath(savePath)
                + "\\"
                + questionTime
                + fileUploadFileName);
        // 以上傳文件建立一個文件上傳流
        FileInputStream fis = new FileInputStream(fileUpload);
        // 將上傳文件的內容寫入服務器
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = fis.read(buffer)) > 0) {
            fos.write(buffer, 0, len);
        }
        String savePicName = request.getContextPath() + savePath + "/"
                + questionTime + fileUploadFileName.toString();
        return savePicName;
    }

}


第三部分是action部分:(處理jsp頁面傳過來的信息並使用圖片上傳工具)

1.必須的聲明:(每個都要配備鄉相應的set和get方法

                               private File fileUpload;
                               private String fileUploadFileName;
                               private String fileUploadContentType;
                               private String savePath;
2.實現代碼(這是一個方法,用於數據庫保存提交的信息,可篩選出需要的使用):

public String advertiseSave() throws Exception{
        
        this.savePath = "/images/";    //此處爲你的項目下的一個文件夾
//        先判斷fileUpload是否爲空
        if(fileUpload==null){
            
        }else{
            PictureUpload fileUp = new PictureUpload();
            String adverisetPicName = fileUp.PicUpload(fileUpload,
                    fileUploadFileName, fileUploadContentType, savePath);
            this.advertisement.setAdvertisePic(adverisetPicName);
            //System.out.println("圖片上傳的名稱爲:" + adverisetPicName+"2222222"+fileUploadFileName);

           //此處是圖片上傳的處理代碼
        }
        
        
        if(this.advertiseService.advertiseAdd(this.advertisement)){
            return "advertise_save_success";
        }else{
            return "advertise_save_failed";
        }
        
    }


最後的最後千萬注意jsp頁面中的input標籤的name屬性的值和action中的File參數要一樣!!!這樣就完事了。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章