文件上传也是常见的功能,趁着周末,用Spring boot来实现一遍。

前端部分
前端使用jQuery,这部分并不复杂,jQuery可以读取表单内的文件,这里可以通过formdata对象来组装键值对,formdata这种方式发送表单数据更为灵活。你可以使用它来组织任意的内容,比如使用
formData.append("test1","hello world");
在kotlin后端就可以使用@RequestParam("test1") greet: String来取得他的值。
在本例的上传中,formdata用于装配上传表单,就像这样:
function uploadfile() {
var formData = new FormData();
$.each($("input[type='file']")[0].files, function (i, file) {
formData.append('upload-file', file);
});
$.ajax({
url: "/upload",
method: "post",
data: formData,
processData: false,
contentType: false
}).done(function (res) {
if (res.success) {
$("#message").text(res.message + res.files);
$("#message").addClass("green")
$("#message").removeClass("red")
} else {
$("#message").text("cannot upload files, reason: " + res.message)
$("#message").addClass("red")
$("#message").removeClass("green")
}
})
.fail(function (res) {
})
}
使用FormData对象,在前端连form标签都不需要。
其中关于上面代码的几点解释:
•如果input标签上使用了multiple,那么用户可能选择多个文件,所以再装配formdata的时候,需要上面的each循环。
•contentType: false 设置成false告诉jQuery在header里不要用任何的content type。
•processData: false:告诉jQuery不用讲传输内容编码(因为默认的content type是application/x-www-form-urlencoded)。如我们要发送DOM或确实不需要编码的对象,就把这个参数设成false。
注意:
•如果不将contentType设置成false,kotlin后端会报异常
Current request is not a multipart request
•如果没有将processData设成false,javascript会报错:
Uncaught TypeError: Illegal invocation
•如果要上传多个文件,在input标签上设置multiple属性。
后端部分
后端准备在上传完成后,给前端回复一个成功或失败的信息,为此,创建一个返回的对象:
class UploadResult(val success: Boolean, val message: String, val files: Array<String>)
•success: 告诉前端是否上传成功
•message:服务器端往前端返回的信息,可以包含任意后端想返回的内容,比如今天服务器所在地天气不好,所以服务器打算拒绝非管理员的上传请求。
•files:上传成功了哪些文件。、
后端的关键代码:
@ResponseBody
@PostMapping("upload")
fun upload(@RequestPart("upload-file") uploadfile: Array<MultipartFile>): UploadResult {
if (uploadfile.count() == 0) return UploadResult(false, "the uploading file is not detected.", arrayOf())
val dir = env.getProperty("com._1b2m.defaultuploaddir")
val f: File = File(dir)
if (!f.exists()) {
f.mkdirs()
}
for (file in uploadfile) {
val fileName = file.originalFilename;
val filepath: String = Paths.get(dir, fileName).toString()
val stream: BufferedOutputStream = BufferedOutputStream(FileOutputStream(File(filepath)))
stream.write(file.bytes)
stream.close()
}
return UploadResult(true, "successfully uploaded your file(s). ", uploadfile.map { it.originalFilename }.toTypedArray())
}
注意:
在kotlin中的RequestPart("upload-file”),和前端的formData.append('upload-file', file)要保持一致,我这里用的变量叫upload-file,如果不一致,后端就没有取到数据了。
本文涉及到的源代码:https://github.com/syler/Fun/tree/master/spring-boot-file-upload-with-jquery
最后上一张截图,图片上传成功:
以上所述是小编给大家介绍的使用Spring boot + jQuery上传文件(kotlin),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
# spring
# boot
# jquery
# 上传文件
# kotlin
# jquery+ajaxform+springboot控件实现数据更新功能
# Spring shiro + bootstrap + jquery.validate 实现登录、注册
# 玩转spring boot 结合jQuery和AngularJs(3)
# Spring Boot 中application.yml与bootstrap.yml的区别
# spring boot+thymeleaf+bootstrap实现后台管理系统界面
# AJAX +SpringMVC 实现bootstrap模态框的分页查询功能
# 基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
# springboot整合jquery和bootstrap框架过程图解
# 后端
# 上传
# 表单
# 多个
# 会报
# 小编
# 设置成
# 都不
# 就像
# 你可以
# 不需要
# 我这
# 一遍
# 这部
# 可以通过
# 就把
# 给大家
# 如果没有
# 几点
# 涉及到
相关文章:
全景视频制作网站有哪些,全景图怎么做成网页?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
如何通过山东自助建站平台快速注册域名?
如何在Ubuntu系统下快速搭建WordPress个人网站?
公司门户网站制作流程,华为官网怎么做?
制作旅游网站html,怎样注册旅游网站?
Swift中循环语句中的转移语句 break 和 continue
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
临沂网站制作企业,临沂第三中学官方网站?
湖北网站制作公司有哪些,湖北清能集团官网?
行程制作网站有哪些,第三方机票电子行程单怎么开?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
创业网站制作流程,创业网站可靠吗?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何通过云梦建站系统实现SEO快速优化?
如何通过虚拟主机快速搭建个人网站?
模具网站制作流程,如何找模具客户?
建站之星如何实现PC+手机+微信网站五合一建站?
网站制作话术技巧,网站推广做的好怎么话术?
如何零基础开发自助建站系统?完整教程解析
制作农业网站的软件,比较好的农业网站推荐一下?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
如何快速搭建二级域名独立网站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何快速生成ASP一键建站模板并优化安全性?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
如何通过VPS建站实现广告与增值服务盈利?
专业商城网站制作公司有哪些,pi商城官网是哪个?
建站之星官网登录失败?如何快速解决?
建站之星如何开启自定义404页面避免用户流失?
香港服务器租用费用高吗?如何避免常见误区?
建站主机SSH密钥生成步骤及常见问题解答?
javascript基本数据类型及类型检测常用方法小结
如何自定义建站之星网站的导航菜单样式?
济南专业网站制作公司,济南信息工程学校怎么样?
如何在橙子建站上传落地页?操作指南详解
简单实现Android验证码
建站之星如何取消后台验证码生成?
香港服务器租用每月最低只需15元?
焦点电影公司作品,电影焦点结局是什么?
电商网站制作公司有哪些,1688网是什么意思?
山东云建站价格为何差异显著?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
定制建站模板如何实现SEO优化与智能系统配置?18字教程
淘宝制作网站有哪些,淘宝网官网主页?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何获取上海专业网站定制建站电话?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
如何快速上传自定义模板至建站之星?
*请认真填写需求信息,我们会在24小时内与您取得联系。