失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java ajax 上传图片_用ajax上传图片及java后台接收问题

java ajax 上传图片_用ajax上传图片及java后台接收问题

时间:2022-01-25 00:24:59

相关推荐

java ajax 上传图片_用ajax上传图片及java后台接收问题

用ajax往后台上传图片时,

1. form表单标签里要加属性:enctype="multipart/form-data";

图片

预览

$('#logos').change(function () {

previewImgEvents();

});

function previewImgEvents() {

// 根据这个 获取文件的 HTML5 js 对象

var files = event.target.files, file;

if (files && files.length > 0) {

// 获取目前上传的文件

file = files[0];

// 来在控制台看看到底这个对象是什么

// 那么我们可以做一下诸如文件大小校验的动作

if (file.size > 1024 * 1024) {

alert('图片大小不能超过 1MB!');

return false;

}

// !!!!!!

// 下面是关键的关键,通过这个 file 对象生成一个可用的图像 URL

// 获取 window 的 URL 工具

var URL = window.URL || window.webkitURL;

// 通过 file 生成目标 url

var imgURL = URL.createObjectURL(file);

// 用这个 URL 产生一个 将其显示出来

$('#upload_images').attr('src', imgURL);

// 使用下面这句可以在内存中释放对此 url 的伺服,跑了之后那个 URL 就无效了

// URL.revokeObjectURL(imgURL);

}

}

2. ajax请求体里,

------------------------------------------

用formData装上传的图片时的方式:

var formData = new FormData();

var logo_file = document.getElementById("logos");

var logoFileObj = logo_file.files[0];

formData.append("logos", logoFileObj);

------------------------------------------

$.ajax({

cache: false,

type: 'post',

url: SERVER_URL + "/xxx" +( "?APIType=3&Authorization=" + token),

data:xxx,

processData: false,

contentType: false,

success: function (data) {...

-----------------------------------------------------------------------------------------

data中可传入的形式有:

1)

var form = new FormData(document.getElementById("formId"));

...

data: form,

2)

var formData = new FormData();

formData.append("key",value);

...

data: formData,

-----------------------------------------------------------------------------------------

3. java后台接收时:(form和formData一样)

@Transactional

@RequestMapping(value = "", method = RequestMethod.POST)

public int addHospital(Entity entity, MultipartFile logos) {

if (null != logos) {

if (logos.getSize() > 0) {

String imageSrc = uploadFile(logos, xxx.getxxx().toString());

if (!Misc.isNull(imageSrc)) {

xxx.setLogo(imageSrc.substring(imageSrc.lastIndexOf("/") + 1));

}

}

} else {

xxx.setLogo("default.jpg");

}

}

-----------------------------------------------------------------------------------------

如果formData传入时,entity里的一个属性本身时一个实体,则单独把这个实体的属性值在js里封装起来,

整体放到formData里,

var aaa = {

key: value,

key: value,

key: value,

...

};

var ht = JSON.stringify(aaa); -- 把aaa整体转换成json。

formData.append("xxxs", ht); -- xxxs是在后台实体里新增的一个临时字段:

@Transient

private String xxxs;

在java后台接收时的处理:

String xxxs = qqq.getXxxs();

JSONObject jsonObject = JSON.parseObject(xxxs);

qqq.setXxx(JSONObject.toJavaObject(jsonObject, xxx.class)); -- xxx是实体里的一个本身为实体的属性字段。

(这样就把单独的这部分数据整体set到xxx里了)

(用的是:com.alibaba.fastjson下的类工具)。

如果觉得《java ajax 上传图片_用ajax上传图片及java后台接收问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。