前几天做了图片文件的上传,以前虽然也做过但是每次做都要查找资料,现在在这里做个笔记。
我用的是Struts2的图片上传。下面我们来看代码:
前端页面:
<script type="text/javascript" src="${rootPath}/scripts/jquery.form.js"></script>
<form action="${rootPath}/plat/knowledgebase/ajaxUploadPicture.htm" method="post" enctype="multipart/form-data" id="pictureform">
<tr height="60px">
<td class="rigthtext">健康知识图片:</td>
<td class="lefttext">
<img src="${rootPath}${knowledgeBase.picture}" alt="无法显示" style="width: 200px;" id="showimg"/>
<input class="input-sousuo" type="file" name="file" style="width: 50%;" onchange="ajaxUploadPicture();" id="upfile"/>
</td>
</tr>
</form>
/**
* 检验是否是图片文件
*/
function verifimg(){
var filePath = document.getElementById("upfile");
if(filePath.value!=null && filePath.value.length>0){
//图片比较少且类型固定时
if(!(/(?:jpg|gif|png|bmp|jpeg|tif|tiff)$/i.test(filePath.value))){//只判断jpg|gif|png格式,其他的格式可以往后追加
alert("只支持jpg/gif/png/bmp/jpeg/tif/tiff的图片");
$('#showimg').attr("src","");
return false;
}else{
return true;
}
//图片比较多且类型不固定时
<%--if(!(/image\/.*/i.test(filePath.value))){--%>
<%--alert("不是图片类型");--%>
<%--return false;--%>
<%--}else{--%>
<%--return true;--%>
<%--}--%>
}else{
return true;
}
}
/**
* from异步上传图片
点击图片提交的时候,先异步上传图片,把图片在服务器上的路径返回回来
把图片返回的图片路径设置到另一个form里面,把图片路径进行提交,路径存放到数据库
*/
function ajaxUploadPicture(){
if(verifimg()){
var option={
async:true,
cache:false,
dataType:"text",
type:"post",
success: function(data){
$('#pictureinput').val(data);//设置图片路径
$('#showimg').attr("src",rootPath+data);//进行预览
}
};
$('#pictureform').ajaxSubmit(option);//图片异步上传,来自于jQuery.form,必须导入相应的jQuery.form.js
}
}
后台代码:
/**
* ajax上传图片
* @throws IOException
*/
private File file;//上传文件,临时文件,最终转换成流写入文件(一般以XXXXX.TEMP.的文件)
private final String basePath="/images/knowledgebase";
public void ajaxUploadPicture() throws IOException{
String newPath=ServletActionContext.getServletContext().getRealPath("/")+basePath;//上传文件在服务器上的路径
if(!new File(newPath).exists()){
new File(newPath).mkdirs();
}
//清除服务器上的冗余图片
File [] f=new File(newPath).listFiles();
for(int i=0;i<f.length;i++){
if(f[i].getName().endsWith(".jpg")){//必须是图片
boolean b=knowledgeBaseService.findExitByPic(basePath+"/"+f[i].getName());
System.out.println("##########"+b);
if(!b){//如果数据库里面没有则删除
f[i].delete();
}
}
}
String newImage=new IdGenerator().generate()+".jpg";//上传文件的图片名字
newPath=newPath+"/"+newImage;
org.apache.commons.io.FileUtils.copyInputStreamToFile(new FileInputStream(file), new File(newPath));//开始上传,把流写入自己新建的文件
this.printToJsp(basePath+"/"+newImage);//回写图片路径
}
相关推荐
struts2文件上传与下载,eclipse与myeclipse导入即可使用的代码,简单易懂,希望对你有帮助,喜欢的给个五星评价,谢谢!!!
Struts2中文件上传与下载案例
struts2 文件上传与下载 ,希望对其他人有所帮助!
struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载
struts2文件上传与下载, <s:fielderror></s:fielderror> 文件"></s:file> <s:submit id="submit" value="sbumit"></s:submit> </s:form>
struts2文件的上传与下载,包含超出指定文件大小之后的提示。更多详细内容,请参考博客:http://blog.csdn.net/qq_20889581/article/details/52838848
在struts2基础上实现的包括单文件、多文件的上传及下载
Struts2.0 文件上传与下载全解析Struts2.0 文件上传与下载全解析
Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码 Struts2文件上传源码
struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传struts2文件上传
struts与hibernate实现文件的上传与动态下载 主要就是运用struts2.2和hibernate3.6进行文件上传与下载,并且能动态的下载,里面包括了详细的构建文档,以及代码
http://blog.csdn.net/johnjobs/article/details/8076832博文中附件的下载链接
Struts2 文件上传下载 多文件 单文件 实例;支持单个或多个文件的上传下载,并且自定义上传文件的大小和类型!!!
需求 1.能够对多个文件进行上传(可以选择上传文件个...提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载 随意文件 java Struts2 单例 配置 动态读取 李顺利
struts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileupload
Struts2文件上传下载和表单重复提交问题
struts2中的文件上传和下载示例 struts2中的文件上传和下载示例 struts2中的文件上传和下载示例