首选图片的上传和下载并不是很难,但要注意细节。

一,给出前端图片上传的html代码

1.图片上传的控件

 <img src="/${res}/images/default.png" alt="" class="backimg">
<form method="post" id="imgform" enctype="multipart/form-data" action="dy_upload_image.jspx">
<a href="javascript:;" class="imgstyle">请选择文件
<input type="file" name="uploadImage" id="uploadImage">
</a>
<input type="button" onclick="gosubmit()" id="imgbtn" value="上传" />
</form>

上传图片要注意给出默认图片,提交按钮是btton、并不是submit ,属性是   enctype="multipart/form-data" 这样后台才能接收到上传的文件。

2.图片上传的js

(1)首次加载的js

$.ajax({
url:'dy_firstget_image.jspx',
type:'get',
data:{recid:str},
success:function(info){
$('.backimg').attr('src',JSON.parse(info).msg)
console.log(info)
},
error:function(err,errmsg){
console.log(errmsg)
}
})

(2)点击上传时的js

function gosubmit(){
var formdata=new FormData();
//formdata.append('name', 'uploadImage');
formdata.append('uploadImage',$('#uploadImage').get(0).files[0]);
formdata.append('recid',str);
$.ajax({
url:'dy_upload_image.jspx',
type:'post',
contentType:false,
data:formdata,
processData:false,
success:function(info){
console.log(info)
$('.backimg').attr('src',JSON.parse(info).msg);
},
error:function(err){
console.log(err)
}
});
}

这里用到了formdata ,我理解的是用ajax 提交的方式将表单提交上去,因为form表单正常submit提交会跳到下一个界面。用ajax提交可以在本页面预览图片,用户体验很好。

把图片数据放到fordata中注意上面红色js的代码,是后面controller接到数据的关键。

先把图片挂上去,昨天的成果(笑脸)

3,后台接收图片的controller(首次加载图片,如果没有图片则显示默认图片)

/**
* 首次加载预览图片
* @param request
* @param response
* @param imageName
*/
@RequestMapping(value = "/dy_firstget_image.jspx", method = RequestMethod.GET)
public void dy_firstget_image(HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "recid", required = false) String recid) {
response.setContentType("image/jpeg");
if(!StringUtils.isEmpty(recid)){
BaseInfoManageBean baseBean = cmsDyUploadImageDaoImpl.getDXYQSBImageByid(recid);
//根据id查询该仪器的图片,如果不为空则返回图片url
if(!StringUtils.isEmpty(baseBean.getPhoto())){
ResponseUtils.renderText(response, DyUtils.getJSONString(0, baseBean.getPhoto()));
}
}
}

4,上传图片方法

    /**
* 上传图片、并且把照片url存储到大型仪器表中
* @param request
* @param response
* @param file
* @param recid
*/
@RequestMapping(value = "/dy_upload_image.jspx", method = RequestMethod.POST)
public void dy_upload_image(HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "uploadImage", required = false) MultipartFile file,
@RequestParam(value = "recid", required = false) String recid) {
if(file!=null){
String imageUrl = cmsDyUploadImageDaoImpl.saveImage(file, recid);
if(imageUrl!=null){
ResponseUtils.renderText(response, DyUtils.getJSONString(0, imageUrl));
return;
}
}
ResponseUtils.renderText(response, DyUtils.getJSONString(1, "图片上传失败"));
}

上传成功后返回imageUrl 赋值到img控件上面

<img src="http://127.0.0.1:8080/bjnxy/dy_get_image.jspx?imageName=537e902607944b04a45a3d62d0bd28a3.jpg" alt="" class="backimg">

5,预览图片方法

/**
* 预览图片
* @param request
* @param response
* @param imageName
*/
@RequestMapping(value = "/dy_get_image.jspx", method = RequestMethod.GET)
public void dy_get_image(HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "imageName", required = false) String imageName) {
response.setContentType("image/jpeg");
try {
StreamUtils.copy(new FileInputStream(new File(DyUtils.IMAGE_DIR+imageName)), response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
ResponseUtils.renderText(response, DyUtils.getJSONString(1, "读取图片失败"));
}
}

用Ajax图片上传、预览、修改图片的更多相关文章

  1. [前端 4] 使用Js实现图片上传预览

    导读:今天做图片上传预览,刚开始的做法是,先将图片上传到Nginx,然后重新加载页面才能看到这个图片.在这个过程中,用户一直都看不到自己上传的文件是什么样子.Ps:我发现我真的有强迫症了,都告诉我说不 ...

  2. HTML5 图片上传预览

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...

  3. js实现图片上传预览及进度条

    原文js实现图片上传预览及进度条 最近在做图片上传的时候,由于产品设计的比较fashion,上网找了比较久还没有现成的,因此自己做了一个,实现的功能如下: 1:去除浏览器<input type= ...

  4. js前端实现多图图片上传预览

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  5. 12-tinyMCE文本编辑器+图片上传预览+页面倒计时自动跳转

    文本编辑器插件:1.将tinymce文件夹全部复制到webContent下2.tinymce/js目录下放 jquery等三个js文件3.语言包:tinymce/js/tinymce/langs目录下 ...

  6. 模拟QQ心情图片上传预览

    出于安全性能的考虑,目前js端不支持获取本地图片进行预览,正好在做一款类似于QQ心情的发布框,找了不少jquery插件,没几个能满足需求,因此自己使用SWFuplad来实现这个图片上传预览. 先粘上以 ...

  7. html,图片上传预览,input file获取文件等相关操作

    input file常用方法: var obj=document.getElementById("upimage"); var file=obj.files[0];//获取文件数据 ...

  8. js:s上次预览,上传图片预览,图片上传预览

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 用html5文件api实现移动端图片上传&预览效果

    想要用h5在移动端实现图片上传&预览效果,首先要了解html5的文件api相关知识(所有api只列举本功能所需): 1.Blob对象  Blob表示原始二进制数据,Html5的file对象就继 ...

  10. 移动端 js 实现图片上传 预览

    方法一: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&q ...

随机推荐

  1. 【例题 8-7 UVA - 11572】Unique Snowflakes

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 类似尺取法. 用set判断这段区间有没有重复的数字. 有的话,就把头节点的那个数字删掉,直到没有为止. [代码] /* 1.Shou ...

  2. 【Codeforces Round #429 (Div. 2) A】Generous Kefa

    [Link]:http://codeforces.com/contest/841/problem/A [Description] [Solution] 模拟,贪心,每个朋友尽量地多给气球. [Numb ...

  3. 设计模式六大原则(三):依赖倒置原则(Dependence Inversion Principle)

    依赖倒置原则(DIP)定义: 高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象. 问题由来: 类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码 ...

  4. [D3] Add label text

    If we want to add text to a node or a image // Create container for the images const svgNodes = svg ...

  5. 使用ajax发送图片等文件

    1.使用H5的FormData()对象,append()添加文件 2.processData: false, // 告诉jQuery不要去处理发送的数据    contentType: false, ...

  6. UVA 10391 - Compound Words 字符串hash

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  7. (转)oracle表空间使用率统计查询

    转自:http://www.cnblogs.com/xwdreamer/p/3511047.html 参考文献 文献1:http://blog.itpub.net/24104518/viewspace ...

  8. .netcore下的微服务、容器、运维、自动化发布

    原文:.netcore下的微服务.容器.运维.自动化发布 微服务 1.1     基本概念 1.1.1       什么是微服务? 微服务架构是SOA思想某一种具体实现.是一种将单应用程序作为一套小型 ...

  9. MySql开发之函数

    1,在mySql常见的文本函数中常见的文本函数例如以下表所看到的: 2,数字函数例如以下: 3,日期和时间函数: 4,格式化日期和时间 使用的函数例如以下DATE_FORMAT()和TIME_FORM ...

  10. [React Intl] Render Content with Placeholders using react-intl FormattedMessage

    Learn how to use react-intl to set dynamic values into your language messages. We’ll also learn how ...