微信小程序端实现图片上传功能(后台java)
第一步,选择图片:wx.chooseImage()
第二步,上传图片:wx.uploadFile()
第三步,显示图片。
下面直接上代码(wxml代码我这边就不展示了)
public AjaxResult batch() { AjaxResult result = new AjaxResult(); try { Long merchantId = getMerchantIdByToken(); int uploadType = Integer.parseInt(ServletUtils.getHeaderByName("uploadType")); DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8"); List<FileItem> items = upload.parseRequest(ServletUtils.getRequest()); logger.info("本次上传的文件数量:{}", items.size()); List<String> resultFileUrls = new ArrayList<String>(); for (FileItem item : items) { String name = item.getFieldName(); logger.info("fieldName:{}", name); String folder = UploadTypeEnum.getByTargetType(uploadType).getFolder(); // 判断是否是一个一般的表单域, if (!item.isFormField()) { InputStream is = item.getInputStream(); //创建文件目录 String path = profile + merchantId + File.separatorChar + folder + File.separatorChar + item.getName(); File file = new File(path); File fileParent = file.getParentFile(); if (!fileParent.exists()) { fileParent.mkdirs(); } file.createNewFile(); FileOutputStream fos = new FileOutputStream(path); byte[] buff = new byte[1024]; int len = 0; while ((len = is.read(buff)) > 0) { fos.write(buff); } is.close(); fos.close(); resultFileUrls.add("http://" + fileServerDomain + "/" + merchantId + "/" + folder + "/" + item.getName()); } } result = AjaxResult.success("上传文件成功").putListData(resultFileUrls); } catch (Exception e) { result = AjaxResult.error("上传文件异常"); e.printStackTrace(); } return result; }
后台文件上传接口可以自己定义封装文件路径,比较灵活,不需要生搬硬套。我这边建议是按照一定的规则、归类存取,这样对于比较多文件的情况下方便查找。那么接下来你亲自操作一遍试试?有问题我们再探讨。