SSM项目关于如何下载图片

来源:互联网 发布:plc电路图绘制软件 编辑:程序博客网 时间:2024/06/02 05:20

首先也是最重要的就是首先导入jar包


我的之前就是忘记导入jar包了,一直不对,以为代码错了,最后才想起来忘记导入jar包了

还有就是在Webroot下面见一个文件夹,我的名字是upload



JSP

<form action="show1.do" method="post" enctype="multipart/form-data">
   
    <p>
姓名:
<input name="name"  />
</p>
<p>
性别:
<input name="gender" type="radio" value="男" checked="checked" />

<input name="gender" type="radio" value="女" />



</p>
<p>
头像:
<input name="img" type="file" />
</p>



<p>
<input type="submit" value="上传" />
</p>
     
    </form>

Controller

@RequestMapping("show1.do")
public String filesUpload1(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

if (!ServletFileUpload.isMultipartContent(request)) {
// 不是二进制格式,程序终止
return null;
}
Img img = new Img();
try {
// 实例化获得工厂类
FileItemFactory factory = new DiskFileItemFactory();


// 获得上传操作类
ServletFileUpload upload = new ServletFileUpload(factory);


// 获得表单项
List<FileItem> list = upload.parseRequest(request);

// 遍历所有发送到请求中的表单控件
for (FileItem fi : list) {

// 如果不是文件域
if (fi.isFormField()) {

// 判断表单的name属性值
if (fi.getFieldName().equals("name"))
// 根据属性值来赋值
img.setName(fi.getString("utf-8"));


if (fi.getFieldName().equals("gender"))
img.setGender(fi.getString("utf-8"));


} else {
// 如果是文件域

//使用是偏移量和随机数生成文件名,降低文件名重复几率
String filename = "" + System.currentTimeMillis()
+ (int) (Math.random() * 1000000);
//在文件吗名之后追加文件的后缀名
filename += fi.getName().substring(
fi.getName().lastIndexOf("."));
//获得服务器所在的真实路径
String path = request.getSession().getServletContext()
.getRealPath("upload");



//System.out.println(path + "\\" + filename);


//将文件上传
fi.write(new File(path +"\\"+ filename));



img.setImgurl(filename);
}
}
System.out.println(list);
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("*****************************");

System.out.println("姓名"+img.getName()+"性别"+img.getGender()+"照片地址"+img.getImgurl());
System.out.println("*****************************");
return "index.jsp";

}

这样得代码直接复制运行,看一下效果

如果想让图片在上传的时候看一下

在Script中加入以下代码

<script type="text/javascript">
    function showImage() {
        var docObj = document.getElementById("doc");
        var imgObjPreview = document.getElementById("preview");
        if (docObj.files && docObj.files[0]) {
            //火狐下,直接设img属性  
            imgObjPreview.style.display = 'block';
            imgObjPreview.style.width = '300px';
            imgObjPreview.style.height = '120px';
            //imgObjPreview.src = docObj.files[0].getAsDataURL();  
            //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式  
            imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);
        } else {
            //IE下,使用滤镜  
            docObj.select();
            var imgSrc = document.selection.createRange().text;
            var localImagId = document.getElementById("localImag");
            //必须设置初始大小  
            localImagId.style.width = "250px";
            localImagId.style.height = "200px";
            //图片异常的捕捉,防止用户修改后缀来伪造图片 
            try {
                localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
                localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
            } catch (e) {
                alert("您上传的图片格式不正确,请重新选择!");
                return false;
            }
            imgObjPreview.style.display = 'none';
            document.selection.empty();
        }
        return true;
    }
</script>

并且在form表单中加入

 <div id="localImag">
                    <img id="preview" width=-1 height=-1 style="diplay:none" />
  </div>



原创粉丝点击