【学习笔记⑥】ssh中利用struts实现图片的上传功能

     在ssh项目中实现,实现图片的上传功能,操作如下所示:

     1.jsp页面操作,代码如下

       在form表单中插入input标签  

<form action="对应action" method="post" enctype="multipart/form-data" οnsubmit="return checkfm(this)">
    <input type="file" name="image" size="50">
</form>
       对应的js判断图片格式为:


<script language="JavaScript">
function checkfm(form){
	var image = form.image.value;
	if(trim(image)!=""){
		var ext = image.substring(image.length-3).toLowerCase();
		if (ext!="jpg" && ext!="gif" && ext!="bmp" && ext!="png"){
			alert("只允许上传gif、jpg、bmp、png!");
			return false; 
		}
	}else{
		alert("请上传产品图片!");
		return false;
	}
	return true;
}
</script>
   2.写对应的方法,实现功能是判断传入的图片格式是否正确 ,代码如下

interface:

方法实现,注:文件名称必须jsp页面的name值一样,而imageContentType是调用struts中的方法,即_contentType前面的必须和文件名称名字一样,及获取文件上传的类型。
 
3.实现图片上传功能,把上传方法封装,代码如下:

 public static void saveImageFile(File image,String imageFileName,String imgName,String ext) throws Exception{
        
        String path = "admin/images/program";
        String realPath = ServletActionContext.getServletContext().getRealPath(path);
        
        InputStream is = new FileInputStream(image);
        File destFile = new File(realPath,imgName);
        if(!destFile.getParentFile().exists()) {
            destFile.getParentFile().mkdirs();
        }
        OutputStream os = new FileOutputStream(destFile);
        byte[] buffer = new byte[400];
        int length = 0;
        while(-1 != (length = is.read(buffer))) {
            os.write(buffer);
        }
        is.close();
        os.close();
    }

:imageFileName是对应的struts自动实现的,FileName前面的必须和对应的文件一致,imgName是得到的图片的名字。

4.在action中调用方法,实现功能,并把对应的文件名称保存到数据库中,数据库对应的table为image,对应的model省略。代码如下:

   
    private File image;
    private String imageFileName;
    private String imageContentType;//对应的get,set方法此处省略

public  String add() throws Exception{
		 Image image = new Image();
          HttpServletRequest request = ServletActionContext.getRequest();
          //调用方法判断格式是否正确,不成功提示,跳转到展现页面
			if(!imageManager.validateImageFileType(image, imageContentType)){
				request.setAttribute("message", "格式不正确,只允许上传gif、jpg、bmp、png格式的图片!");
				request.setAttribute("urlAddress",SiteUrl.readUrl("image"));//此处为跳转
				return "add_success";
			} 
			String ext = imageFileName.substring(imageFileName.lastIndexOf(".")+1);
			String imgName = UUID.randomUUID().toString()+"."+ext;//把名字随机输出
			image.setImageName(imgName);//
			UploadProductImgUtil.saveImageFile(image,imageFileName,imgName,ext);
			imageManager.addimage(image);
			request.setAttribute("message", "添加成功!");
			request.setAttribute("urlAddress",SiteUrl.readUrl("image"));//根据自己需求
			return "add_success";
	 }


注:以上是总的实现图片上传步骤。页面出去时的操作。jsp页面代码如下:则需要在对应的model中添加get方法,取出全路径。

program中的方法为:

以上为实现图片上传和展现。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值