技术标签: java ajax 上传图片
用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下的类工具)。
文章浏览阅读3.4k次,点赞2次,收藏9次。1.注释掉丑陋的前端页面依赖添加knife4j依赖 <!-- swagger2-UI--><!-- <dependency>--><!-- <groupId>io.springfox</groupId>--><!-- <artifactId>springfox-swagger-ui</artifactId>--><!-- _ruoyi-vue swagger
文章浏览阅读382次,点赞10次,收藏7次。最短路径: [0, 5, 4, 3, 12, 11, 29, 22, 21, 16, 15, 28, 27, 26, 25, 24, 23, 14, 13, 7, 9, 20, 19, 18, 6, 10, 8, 2, 17, 1]运行时间: 43.86513066291809 秒。最短距离: 424.69177537685437。
文章浏览阅读440次。问题描述小鼠a与小鼠b身处一个m×n的迷宫中,如图所示。每一个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿上,下,左,右4个方向进入未封闭的房间。小鼠a位于迷宫的(p,q)方格中,它必须找出一条通向小鼠b所在的(r,s)方格的路。请帮助小鼠a找出所有通向小鼠b的最短道路。小鼠的迷宫 编程任务对于给定的小鼠的迷宫,_小鼠迷宫
文章浏览阅读47次。摘要:数字化转型是企业在数字化环境下进行的全方位变革和创新,旨在提升企业的竞争力和适应能力。在这个过程中,企业的数字化成熟度评估变得尤为重要。本文将介绍一种名为"十大企业数字化转型成熟度评价模型"的评估框架。该模型基于对众多企业数字化转型案例的研究和实践经验,综合考虑了企业的战略、组织、技术和文化等方面的因素。企业数字化转型成熟度评价模型应该根据企业的不同属性进行选择和参考。不同行业、规模和发展阶...
文章浏览阅读387次,点赞10次,收藏9次。【代码】拓扑排序 / 家谱树。
文章浏览阅读6.5k次。先说一下rich-text的实现,很简单html<rich-text nodes="{{myrich}}"></rich-text>js 注意:里面不能用view 否则运行不出来,可以用html的标签,详细见文档 https://developers.weixin.qq.com/miniprogram/dev/component/rich-text.html......_rich-text
文章浏览阅读4.8k次,点赞2次,收藏10次。问题描述 输入6个正整数,且这6个正整数中至少存在一个奇数和一个偶数。设这6个正整数中最大的奇数为a,最小的偶数为b,求出|a-b|的值。 最大奇数与最小偶数之差的绝对值_最大奇数与最小偶数之差的绝对值答案
文章浏览阅读379次,点赞8次,收藏5次。该全家桶资源为课程《Matlab有限元编程从入门到精通30讲》配套的全部源码和讲义PPT/理论文本,旨在以案例的形式讲解各类有限元问题程序实现及算法原理,并提供完整Matlab源码供大家练习,案例源码均包含前后处理模块和求解器模块;单元类型包含:杆单元,梁单元,平面三角形单元,板壳单元,四/六面体实体单元等;物理场问题涉及:静力学、动力学、传热学、材料非线性、几何非线性、接触非线性等求解。
文章浏览阅读2.2w次,点赞5次,收藏2次。Win10任务栏的输入法指示图标略烦,于是想关闭它,在“设置---系统---通知和操作---启用或关闭系统图标”中设置了输入法指示为“关”,但发现每次开机后还是会自己冒出来,于是找啊找,终于找到解决方法了,如下:在“控制面板---时钟、语言和区域---语言---高级设置”下右侧的“切换输入法”里选中“使用桌面语言栏”,然后后面会有个“选项”按钮,点进去在“语言栏”里_输入法指示器
文章浏览阅读775次。上期我们介绍了PyQt中的液晶显示屏(QLCDNumber),这期我们介绍一下PyQt中常用的一个小部件标签(QLabel)。总体介绍QLabel小部件提供文本或图像显示。QLabel用于显示文本或图像。没有提供用户交互功能。标签的外观可以通过各种方式进行配置,可以用于指定另一个小部件的焦点助记键。QLabel可以包含以下任何内容类型:当使用任何方法改变内容时,任何先前的内容都被清除。警告:当在Q..._pyqt5 sender
文章浏览阅读279次。随着我国色选机产业的不断发展,以及粮食、矿产、再生资源等行业的机器智能化程度的提高,国内主要的色选机研制企业都在谋求生产规模的扩大,与此同时,国外著名色选企业也在大举进入国内市场。本项目旨在通过技术创新和实际应用,研发一款高精度色选机,为目标行业提供先进的色选解决方案,在农产品种类繁多、品质要求严格的生产环境中,高效、准确地实现对农产品的色彩分选,提高生产效率,减少人工成本,降低人为误差,从而提升农产品的质量和附加值,在目标行业中取得显著的经济和社会效益,推动行业的数字化转型和智能化升级。_色选机软件系统
文章浏览阅读778次,点赞21次,收藏20次。每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。通过此工具开发的程序直接在本地运行,而不是虚拟机。,尤其是非计算机专业的同学,面试官一上来肯定是问你基础,要是基础表现不好很容易被扣上基础不扎实的帽子,常见的就那些,只要你平时认真思考过基本上面试是没太大问题的。