在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中的方法为:
以上为实现图片上传和展现。