微信小程序之图片上传之巨坑

  写这个随笔的目的是想让遇到这个坑的人少点时间去填坑 

先附上小程序前端和java端代码

  1. startUpload: function(){  
  2.     wx.chooseImage({  
  3.       success: function (res) {  
  4.         var tempFilePaths = res.tempFilePaths  
  5.         console.log(tempFilePaths)  
  6.         wx.uploadFile({  
  7.           url: 'http://localhost:8080/upload/fileUpload' , //仅为示例,非真实的接口地址  
  8.           filePath: tempFilePaths[0],  
  9.           name: "file",  
  10.           header: {  
  11.           "Content-Type": "multipart/form-data"  
  12.           },  
  13.           formData: {  
  14.             "user": "test",  
  15.           },  
  16.           success: function (res) {  
  17.             var data = res.data  
  18.             console.log(data)  
  19.             //do something  
  20.           }  
  21.         })  
  22.       }  

java后端代码:

 
  1. package com.contoller;  
  2.   
  3. import java.io.BufferedOutputStream;  
  4. import java.io.File;  
  5. import java.io.IOException;  
  6. import java.util.UUID;  
  7.   
  8. import javax.servlet.http.HttpServletRequest;  
  9.   
  10. import org.apache.commons.io.FileUtils;  
  11. import org.apache.commons.lang3.StringUtils;  
  12. import org.slf4j.Logger;  
  13. import org.slf4j.LoggerFactory;  
  14. import org.springframework.beans.factory.annotation.Value;  
  15. import org.springframework.web.bind.annotation.PostMapping;  
  16. import org.springframework.web.bind.annotation.RequestMapping;  
  17. import org.springframework.web.bind.annotation.RequestParam;  
  18. import org.springframework.web.bind.annotation.RestController;  
  19. import org.springframework.web.multipart.MultipartFile;  
  20. import com.tool.FileUtil;  
  21.   
  22. @RestController  
  23. @RequestMapping("/upload")  
  24. public class UploadFileContoller {  
  25.       
  26.     private static final Logger LOG = LoggerFactory  
  27.             .getLogger(UploadFileContoller.class);  
  28.       
  29.     @PostMapping("/fileUpload")  
  30.     public String uploadMusicFile(HttpServletRequest request,@RequestParam("file")MultipartFile[] files){  
  31.         LOG.info("进入上传...");  
  32.         String uploadPath="E:/pic/";//存放到本地路径(示例)  
  33.         if(files!=null && files.length>=1) {  
  34.                 BufferedOutputStream bw = null;  
  35.                 try {  
  36.                     String fileName = files[0].getOriginalFilename();  
  37.                     //判断是否有文件  
  38.                     if(StringUtils.isNoneBlank(fileName)) {  
  39.                         //输出到本地路径  
  40. 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";}}  
 
  1. public static String getFileType(String filename){  
  2.         if(filename.endsWith(".jpg") || filename.endsWith(".jepg")){  
  3.             return ".jpg";  
  4.         }else if(filename.endsWith(".png") || filename.endsWith(".PNG")){  
  5.             return ".png";  
  6.         } else{  
  7.             return "application/octet-stream";  
  8.         }  
  9. }  

 代码中标红色的这个地址,注意,如果在本地调试的时候是绝对不能访问的,一定是要线上的地址,也就是服务器的地址。比如你本地的地址为192.168.0.1 后面的参数就不写了,那你这边就要把这个地址改为服务器地址,然后把整个程序打包部署到服务器上,

前端访问服务器的地址,才能上传成功。

参考网址:https://blog.csdn.net/time512/article/details/80241629

猜你喜欢

转载自www.cnblogs.com/jpc123/p/9072213.html