最近在做一个口语测评的小程序服务端,小程序涉及到了音频文件的上传,按理说应该统一封装一个第三方上传接口服务提供给前段调用,但是开发没有那么多道理,暂且为了省事就封装到后端服务中去了。
这篇文章需要用到前面所讲的知识点《 SpringBoot开发案例之配置静态资源文件路径 》,请仔细阅读如何自定义静态资源路径,最好做到服务跟文件分离。
wx.uploadFile({ url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址 filePath: '/img/ad.png',//默认小程序内图片路径,你也可以自己上传 name: 'file', header: { "Content-Type": "multipart/form-data" }, formData: { userId: 12 //附加信息 }, success: function (res) { console.log(res); }, fail: function (res) { console.log(res); }, complete: function (res) { } }) },
/** * 口语测试 * 创建者 柒 * 创建时间 2018年3月13日 */ @Api(tags ="口语测试接口") @RestController @RequestMapping("/test") public class TestController { private final static Logger LOGGER = LoggerFactory.getLogger(WechatController.class); @Value("${web.upload.path}") private String uploadPath; @ApiOperation(value="上传文件(小程序)") @PostMapping("/fileUpload") public String upload(HttpServletRequest request, @RequestParam("file")MultipartFile[] files){ LOGGER.info("上传测试"); //多文件上传 if(files!=null && files.length>=1) { BufferedOutputStream bw = null; try { String fileName = files[0].getOriginalFilename(); //判断是否有文件(实际生产中要判断是否是音频文件) if(StringUtils.isNoneBlank(fileName)) { //创建输出文件对象 File outFile = new File(uploadPath + UUID.randomUUID().toString()+ FileUtil.getFileType(fileName)); //拷贝文件到输出文件对象 FileUtils.copyInputStreamToFile(files[0].getInputStream(), outFile); } } catch (Exception e) { e.printStackTrace(); } finally { try { if(bw!=null) {bw.close();} } catch (IOException e) { e.printStackTrace(); } } } return "success"; } }
作者:小柒
出处: https://blog.52itstyle.com
分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。