javaweb中struts的图片上传

来源:互联网 发布:淘宝做任务返利 编辑:程序博客网 时间:2024/05/17 01:59

图片上传我给他分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参数要一样!!!这样就完事了。。。

0 0