您的位置:首页 > 其它

SSM项目关于如何下载图片

2017-08-25 08:57 204 查看
首先也是最重要的就是首先导入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">

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

  </div>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: