前台页面上传data image图片,java后台接收图片保存
最近在项目中有这么一个需求,就是上传一个视频文件,然后要获取视频文件的第一帧图片,这个可以通过canvas获取得到,得到的是一个dataURL,之后还要将这个图片上传到云,这个时候如何操作就不清楚了,于是乎,google一番,总结如下:
- 将dataURL转成Blob
- 利用formData
- 异步上传
function b64toBlob(b64Data, contentType='', sliceSize=512) { const byteCharacters = atob(b64Data); const byteArrays = []; for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) { const slice = byteCharacters.slice(offset, offset + sliceSize); const byteNumbers = new Array(slice.length); for (let i = 0; i < slice.length; i++) { byteNumbers[i] = slice.charCodeAt(i); } const byteArray = new Uint8Array(byteNumbers); byteArrays.push(byteArray); } const blob = new Blob(byteArrays, {type: contentType}); return blob; }
// dataURL to blob // 假设一个dataURL const ImageURL = "转成Base64的变量"; // Split the base64 string in data and contentType const block = ImageURL.split(";"); // Get the content type of the image const contentType = block[0].split(":")[1];// In this case "image/jpeg" // get the real base64 content of the file const realData = block[1].split(",")[1];// In this case "R0lGODlhPQBEAPeoAJosM...." // Convert it to a blob to upload var blob = b64toBlob(realData, contentType); // new a formData const formData = new FormData(); formData.append('blob', blob); // upload $.ajax({ url:url, data: formData type:"POST", contentType:false, processData:false, error:function(err){ }, success:function(data){ }, });
后台接受代码
@RequestMapping(value = "/uploadImage") @ResponseBody public ApiMessage uploadImage(MultipartFile file, HttpServletRequest request) { try {
//自定义处理图片保存方法 return ApiMessage.succeed(Utils.getImageUrl2(file)); } catch (Exception e) { return ApiMessage.error(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下