写这个随笔的目的是想让遇到这个坑的人少点时间去填坑
先附上小程序前端和java端代码
- startUpload: function(){
- wx.chooseImage({
- success: function (res) {
- var tempFilePaths = res.tempFilePaths
- console.log(tempFilePaths)
- wx.uploadFile({
- url: 'http://localhost:8080/upload/fileUpload' , //仅为示例,非真实的接口地址
- filePath: tempFilePaths[0],
- name: "file",
- header: {
- "Content-Type": "multipart/form-data"
- },
- formData: {
- "user": "test",
- },
- success: function (res) {
- var data = res.data
- console.log(data)
- //do something
- }
- })
- }
java后端代码:
- package com.contoller;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.IOException;
- import java.util.UUID;
- import javax.servlet.http.HttpServletRequest;
- import org.apache.commons.io.FileUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
- import com.tool.FileUtil;
- @RestController
- @RequestMapping("/upload")
- public class UploadFileContoller {
- private static final Logger LOG = LoggerFactory
- .getLogger(UploadFileContoller.class);
- @PostMapping("/fileUpload")
- public String uploadMusicFile(HttpServletRequest request,@RequestParam("file")MultipartFile[] files){
- LOG.info("进入上传...");
- String uploadPath="E:/pic/";//存放到本地路径(示例)
- 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)); LOG.info("path=="+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";}}
- public static String getFileType(String filename){
- if(filename.endsWith(".jpg") || filename.endsWith(".jepg")){
- return ".jpg";
- }else if(filename.endsWith(".png") || filename.endsWith(".PNG")){
- return ".png";
- } else{
- return "application/octet-stream";
- }
- }
代码中标红色的这个地址,注意,如果在本地调试的时候是绝对不能访问的,一定是要线上的地址,也就是服务器的地址。比如你本地的地址为192.168.0.1 后面的参数就不写了,那你这边就要把这个地址改为服务器地址,然后把整个程序打包部署到服务器上,
前端访问服务器的地址,才能上传成功。
参考网址:https://blog.csdn.net/time512/article/details/80241629