专栏首页IT笔记SpringBoot开发案例之微信小程序文件上传

SpringBoot开发案例之微信小程序文件上传

前言

最近在做一个口语测评的小程序服务端,小程序涉及到了音频文件的上传,按理说应该统一封装一个第三方上传接口服务提供给前端调用,但是开发没有那么多道理,暂且为了省事就封装到后端服务中去了。

这篇文章需要用到前面所讲的知识点《SpringBoot开发案例之配置静态资源文件路径》,请仔细阅读如何自定义静态资源路径,最好做到服务跟文件分离。

文件上传

前端小程序代码

wx.uploadFile({
      url: 'https://example.weixin.qq.com/upload', //示例,非真实的接口地址
      filePath: '/static/itstyle.mp3',//默认小程序内音频路径,也可以自己上传
      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,如何配置,可以参考《阿里云证书服务》配置。

启动服务,执行小程序上传方法,监控前台返回参数,如果没有错误(显然没错误),查看服务器目录/home/file 下是否有相应的文件。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SpringBoot开发案例之微信小程序文件上传

    最近在做一个口语测评的小程序服务端,小程序涉及到了音频文件的上传,按理说应该统一封装一个第三方上传接口服务提供给前段调用,但是开发没有那么多道理,暂且为了省事就...

    小柒2012
  • SpringBoot开发案例之微信小程序文件上传

    前言 最近在做一个口语测评的小程序服务端,小程序涉及到了音频文件的上传,按理说应该统一封装一个第三方上传接口服务提供给前段调用,但是开发没有那么多道理,暂且为了...

    小柒2012
  • SpringBoot开发案例之整合定时任务(Scheduled)

    来来来小伙伴们,基于上篇的邮件服务,定时任务就不单独分项目了,天然整合进了邮件服务中。 不知道,大家在工作之中,经常会用到那些定时任务去执行特定的业务,这里列举...

    小柒2012
  • SpringBoot开发案例之微信小程序文件上传

    最近在做一个口语测评的小程序服务端,小程序涉及到了音频文件的上传,按理说应该统一封装一个第三方上传接口服务提供给前段调用,但是开发没有那么多道理,暂且为了省事就...

    小柒2012
  • SpringBoot开发案例之微信小程序文件上传

    前言 最近在做一个口语测评的小程序服务端,小程序涉及到了音频文件的上传,按理说应该统一封装一个第三方上传接口服务提供给前段调用,但是开发没有那么多道理,暂且为了...

    小柒2012
  • Android项目实战(七):Dialog主题Activity实现自定义对话框效果

    听着music睡
  • Android项目实战(七):Dialog主题Activity实现自定义对话框效果

    听着music睡
  • MVVM框架的搭建(三)——网络请求

    MVVM框架的搭建(一)——背景 MVVM框架的搭建(二)——项目搭建 MVVM框架的搭建(三)——网络请求

    Demo_Yang
  • slidingmenu开源效果

    本文将更进一步, 在很多实际的应用场景中我们需要一个更复杂的场景,比如说需要在一个菜单选项中集成多个tab来集中显示信息。这个时候 Viewpager就派上用场...

    xiangzhihong
  • Android开发笔记(一百二十三)下拉刷新布局SwipeRefreshLayout

    下拉刷新布局SwipeRefreshLayout是Android又一与时俱进的控件,顾名思义它随着用户手势向下滑动就会触发刷新操作。从实际的下拉效果来看,S...

    用户4464237

扫码关注云+社区

领取腾讯云代金券