前端使用java代码提交form表单单提交图片后,java后台怎么获取该图片?

&&完请问这种问卷的html form表单该如何提交?后台怎么接收?10个牛币所有回答列表(8)这个要看后台如何设置的吧..如果后台有固定的一张该业务表,那提交的时候按普通表单提交就好了...否则一种是类似自定义表单方式的(类报表)可参考activiti工作流,定义的时候定义了问卷表,问卷问题表,问题答案表, 对于值 [提交id]&&[问卷id][问题id][答案id]...传入后台的就是&key(问题) value(答案)了一种是类似自定义页面.直接存页面内容的,可参考mikecrm.&&最佳答案利用ajaxSubmit提交from表单中所有数据form.submit&关键点不再提交上&是在后台怎么获取提交到的值&c:forEach items=&${list }& var=&bean& varStatus=&index&&&&&&&&&&& &c:if test=&${bean.subjectType == '1'}&&&&&&&&&&&&& &div class=&fall onehang& name=&subject& subjectType=&${bean.subjectType}&&${bean.subject }(单选)&/div&&&&&&&&&&&& &div class=&fall&&&&&&&&&&&&&&& &c:forEach items=&${fn:split(bean.options,'|')}& var=&val&&&&&&&&&&&&&&&&& &label style=&float: margin-left: 15&& &input type=&radio& value=&${val }& name=&${index.index }& /&${val }&&&&&&&&&&&&&&& &/label&&&&&&&&&&&&&& &/c:forEach&&&&&&&&&&&& &/div&&&&&&&&&& &/c:if&&&&&&&&&& &c:if test=&${bean.subjectType == '2'}&&&&&&&&&&&&& &div class=&fall onehang& name=&subject& subjectType=&${bean.subjectType}&&${bean.subject }(多选)&/div&&&&&&&&&&&& &div class=&fall&&&&&&&&&&&&&&& &c:forEach items=&${fn:split(bean.options,'|')}& var=&val&&&&&&&&&&&&&&&&& &label style=&float: margin-left: 15&& &input type=&checkbox& value=&${val }& name=&${index.index }& /&${val }&&&&&&&&&&&&&&& &/label&&&&&&&&&&&&&& &/c:forEach&&&&&&&&&&&& &/div&&&&&&&&&& &/c:if&&&&&&&&&& &c:if test=&${bean.subjectType == '3'}&&&&&&&&&&&&& &div class=&fall onehang& name=&subject& subjectType=&${bean.subjectType}&&${bean.subject }&/div&&&&&&&&&&&& &div class=&fall&&&&&&&&&&&&&&& &input class=&mc& type=&text& name=&${index.index }& /&&&&&&&&&&&& &/div&&&&&&&&&& &/c:if&&&&&&&& &/c:forEach&&var obj = new Object();var ss =& var list = new Array();& var subjectList = $(&div[name='subject']&);& for(var i =0;i&subjectList.i++){&&& var subjectType = subjectList.eq(i).attr(&subjectType&);&&& if(subjectType == '1'){ //单选&&&&& if($(&input[name='&+i+&']:checked&).length == 0){&&&&&&& ss =&&&&& } else {&&&&&&& list.push(subjectList.eq(i).html()+&!!!&+$(&input[name='&+i+&']:checked&).val());&&&&& }&&& } else if(subjectType == '2'){&&&&& if($(&input[name='&+i+&']:checked&).length == 0){&&&&&&& ss =&&&&& } else {&&&&&&& var value = new Array();&&&&&&& $(&input[name='&+i+&']:checked&).each(function(){&&&&&&&&& value.push($(this).val());&&&&&&& })&&&&&&& list.push(subjectList.eq(i).html()+&!!!&+value.join(&@@@&));&&&&& }&&& } else {&&&&& if($(&input[name='&+i+&']&).val() == ''){&&&&&&& ss =&&&&& } else {&&&&&&& list.push(subjectList.eq(i).html()+&!!!&+$(&input[type='text'][name='&+i+&']&).val());&&&&& }&&& }& }& //题目!!!答案@@@答案###题目!!!答案@@@答案obj.subjectAnswer = list.join(&###&);if(!ss){&&& $.messager.alert(&提示&,&请完成所有题目后,再次提交!&);&&&& }$.ajax({&&& type: 'POST',&&& url : getRootPath() + &/foreMember/saveQuestion&,&&& data : JSON.stringify(obj),&&& dataType : 'json',&&& contentType : 'application/json',&&& success : function(result) {&&&&& var items = result.&&&&& var info = '';&&&&& for ( var i = 0; i & items. i++) {&&&&&&& info += items[i].message + ',';&&&&& }&&&&& if (info.length & 1) {&&&&&&& $.messager.alert(&提示&,info);&&&&&&&&&&&& } else {&&&&&&& $.messager.alert(&提示&,&尊敬的会员,非常感谢您!&,'',function(){&&&&&&&&& window.location.href= getRootPath();&&&&&&& });&&&&& }&&& }& });&LV21.若是一题一题的答就用cookie先保存2.要是一起答就直接表单提交啊(多选name值一样 &后台用数组接收)希望我的回答能帮到你表单序列化给自己吧html的表单中的submit是提交的属性没错 但是提交之后如何生成数据保存,比如说生成之后出现一个对话框确认什么的 该怎么书写呢?等等等等等完等完完等等等相关问答完等等完完完等等完完完等最近浏览暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
遇到一个需求,就是需要把图片传给后台数据库,然后前端再读取数据库图片,有人说base64,请问一下base64是怎么上传的?前端把图片转为base64数据,传给后台,然后后台保存base64,之后前端读取的时候再解析base64?是这样理解的吗?还有其他方法吗?前端用的是react,后台是java
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
前端把图片转为base64数据,传给后台,然后后台保存base64,之后前端读取的时候再解析base64
是的,可以这样子。转为base64数据后就是一段字符串,POST上传就好了
但是一般不会采用这种方案,因为
1.Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的数据理论上将要比原来的大1/3,消耗流量,浪费空间。2.你转化为Base64之后怎么存储呢?存储在数据库吗?那又要多支付访问数据库的开销。存储为图片文件吗?那又要转换回来,也是增加了解析转换的开销。3.浏览器的兼容问题,IE 8 以下不支持 data url,IE 8 开始支持 data url,却有大小限制。
所以,一般就是把图片当文件上传(multipart/form-data),然后存储于后台的静态目录,GET访问就好了
表单形式上传最简单了,谷歌一下有很多例子,在此就不多说了。
说一下用js上传吧,参考代码:
// -------- 将以base64的图片url数据转换为Blob --------
function convertBase64UrlToBlob(urlData, filetype){
//去掉url的头,并转换为byte
var bytes = window.atob(urlData.split(',')[1]);
//处理异常,将ascii码小于0的转换为大于0
var ab = new ArrayBuffer(bytes.length);
var ia = new Uint8Array(ab);
for (i = 0; i & bytes. i++) {
ia[i] = bytes.charCodeAt(i);
return new Blob([ab], {type : filetype});
$input.on('change', function (e) {
var input = $input.get(0);
var files = input.files || [];
if (files.length === 0) {
console.log('选中 ' + files.length + ' 个文件');
// 遍历选中的文件,预览、上传
$.each(files, function (key, file) {
var filename = file.name || '';
var fileType = file.type || '';
var reader = new FileReader();
// onload事件
reader.onload = function (e) {
var base64 = e.target.result || this.
var formData = new FormData();
formData.append("upload_file", convertBase64UrlToBlob(base64, fileType), filename);
var xhr = new XMLHttpRequest();
// 开始上传
xhr.open('POST', uploadImgUrl, true);
// 发送数据
xhr.send(formData);
reader.readAsDataURL(file);
大致这样,仅供参考,还有很多事件处理没写,请自行补充。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以使用 FormData ,其属于 XHR Level 2 中内容。文件可以使用 input:file 来进行上传,并获取 fileInputElement.files[0] 作为value。
具体使用可参照以上链接。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
其实就是楼上两位的说法。算是基于H5吧。我用过formData和swfupload。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以试试这个插件,,功能挺齐全的,开发了高德的相关功能,亲测很好用,有问题的可以问我
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
当文件上传就行了,也不用什么react框架,采用原生的html表单上传就行了。如果觉得原生表单样式很丑的话,可以用事件来实现文件上传
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
后台不建议用数据库存储,如果能上阿里oss这样的云存储服务最好,不行的话服务器单划一块儿空间存储也行,不过可能得留意别撑掉整个服务器。(有个h5项目被坑过,用户上传很快飙出去好几个G,服务器差点挂了……)图片建议在前端压缩下,用户上传的通常在500k~10M这么个范围,稍微处理下保持在800k左右就差不多了(去掉的通常是些色彩配置信息啊EXIF或者是GPS信息这些东西,还有就是合理的压缩下格式,比如JPEG质量85),然后就可以打包传到后端的存储服务上了,比如阿里OSS。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我之前写过一篇关于移动端H5上传图片的文章,里面基本上囊括了移动端这块图片上传的所有坑,大家可以看看
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
图片暂定是存储在后台数据库中的,前端如何通过接口获取图片,并展示在页面上,请大神指导,谢谢
这个问题已被关闭,原因:问题质量差 - 问题太水、伸手党
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
数据库存的是url,返回url就行了。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
接口请求成功会有一个成功函数,
这个函数里面会有一个参数给你, 这个参数就是后台给你的数据。 拿到数据后进行操作, 一步一步来
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你给图片的地址就可以了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
前端在img标签的src上直接写那个“接口地址+图片标志”即可啊,不需要做什么特殊处理吧
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
比较麻烦的就是将图片以blob的形式存到数据里,读取出来后在后端转成图片base64字符串编码返回给前端(&img src="data:image/base64,base64字符串编码)。 比较合理的做法是数据库里只存图片的URL,将图片存放在硬盘里,前端获取图片url展示。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
用七牛云存图片,会返回一个链接
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
获取Url地址 在设置到dom上面
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
一般后端都是返回url,前端接口请求,后端返回url数据,前端接收url 输出
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
数据库一般存放的是图片的地址(url),不建议把文件直接存放在数据库中。调用后端接口,前端拿到图片的url,然后&img src="url" /&就可以显示了。
如果是小的应用,图片可以直接保存文件系统中,否则需要专门的文件服务器来存储图片,公司可以自己搭建文件服务器,也可以使用一些服务商提供的,比如七牛。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
不建议你用这种方式,可以采用七牛云存储图片,数据库中只保存url。还有一种方式就是你的项目肯定有跟接口一样暴露出来的资源,你创建一个img文件夹,在web项目中暴露出来,图片存储在img下,数据库中存储读取img的相对路径。
好吧,你非要用你这种方式,可以这样,你从数据库中读取出来的是个流数据,可以直接以流的形式写会去,注意写的图片名称&img&中还要用,还有一种方式就是写到你的暴露的文件夹中,返回路径即可
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
使用jsonbird 或者 让后台启用可跨越,访问后台ip 即可
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
图片存在数据库,这首先就是一个错误的做法,一般的做法都是数据库存图片的URL地址。图片存在专门的图片服务器上,页面展示的时候通过静态代理将图片通过URL展示出来,参考JD,TB,都是这么做的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
baseUrl+imgUrl
baseUrl: 接口基础地址,配置全局维护,(可以是存在CDN, 或是其他资源服务器中)imgUrl : 图片路径
拼起来就是完整的 图片资源地址。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
传url就好了啊
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我做的时候就是接url就行了
这个问题已经被关闭无法回答
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:

我要回帖

更多关于 java实现form表单提交 的文章

 

随机推荐