小程序的图片上传与传统的图片上传方式有一些不一样

如果你有幸看到这篇文章,恭喜你,你可以完美解决了。

话不多说,前后端代码一并奉上:

(基于springmvc )

@Controller

@RequestMapping("/upload")

public class UploadController {

private static final Logger logger = LoggerFactory.getLogger(UploadController.class);

@RequestMapping("/picture")

public void uploadPicture(HttpServletRequest request, HttpServletResponse response) throws Exception {

//获取文件需要上传到的路径

String path = request.getRealPath("/upload") + "/";

File dir = new File(path);

if (!dir.exists()) {

dir.mkdir();

}

logger.debug("path=" + path);

request.setCharacterEncoding("utf-8"); //设置编码

//获得磁盘文件条目工厂

DiskFileItemFactory factory = new DiskFileItemFactory();

//如果没以下两行设置的话,上传大的文件会占用很多内存,

//设置暂时存放的存储室,这个存储室可以和最终存储文件的目录不同

/**

* 原理: 它是先存到暂时存储室,然后再真正写到对应目录的硬盘上,

* 按理来说当上传一个文件时,其实是上传了两份,第一个是以 .tem 格式的

* 然后再将其真正写到对应目录的硬盘上

*/

factory.setRepository(dir);

//设置缓存的大小,当上传文件的容量超过该缓存时,直接放到暂时存储室

factory.setSizeThreshold(1024 * 1024);

//高水平的API文件上传处理

ServletFileUpload upload = new ServletFileUpload(factory);

try {

List list = upload.parseRequest(request);

FileItem picture = null;

for (FileItem item : list) {

//获取表单的属性名字

String name = item.getFieldName();

//如果获取的表单信息是普通的 文本 信息

if (item.isFormField()) {

//获取用户具体输入的字符串

String value = item.getString();

request.setAttribute(name, value);

logger.debug("name=" + name + ",value=" + value);

} else {

picture = item;

}

}

//自定义上传图片的名字为userId.jpg

String fileName = request.getAttribute("userId") + ".jpg";

String destPath = path + fileName;

logger.debug("destPath=" + destPath);

//真正写到磁盘上

File file = new File(destPath);

OutputStream out = new FileOutputStream(file);

InputStream in = picture.getInputStream();

int length = 0;

byte[] buf = new byte[1024];

// in.read(buf) 每次读到的数据存放在buf 数组中

while ((length = in.read(buf)) != -1) {

//在buf数组中取出数据写到(输出流)磁盘上

out.write(buf, 0, length);

}

in.close();

out.close();

} catch (FileUploadException e1) {

logger.error("", e1);

} catch (Exception e) {

logger.error("", e);

}

PrintWriter printWriter = response.getWriter();

response.setContentType("application/json");

response.setCharacterEncoding("utf-8");

HashMap res = new HashMap();

res.put("success", true);

printWriter.write(JSON.toJSONString(res));

printWriter.flush();

}

你以为就只有java后端代码吗?

前端代码也拿去

wx.uploadFile({

url: 'https://xxxxxx/upload/picture',

filePath: filePath,//图片路径,如tempFilePaths[0]

name: 'image',

header : {

"Content-Type": "multipart/form-data"

},

formData:

{

userId: 12345678 //附加信息为用户ID

},

success: function (res) {

console.log(res);

},

fail: function (res) {

console.log(res);

},

complete: function (res) {

}

})

经过实践检验,有问题可以下方提问。

java 微信图片上传_微信小程序图片上传java端以及前端实现相关推荐

  1. ios微信本地视频上传到服务器,小程序 ios上传视频的问题

    微信小程序做了个视频上传的功能,上传视频到七牛云 安卓没有任何问题 ios就有问题了 ios下如果从相册选择视频上传之后提示上传成功了,但是跳转不了页面,但是如果直接拍摄的视频上传之后可以正常跳转页面 ...

  2. java代码顺序执行命令_将小程序安装到Java卡的APDU命令的顺序是什么?

    While the oracle documentation proposes a different sequence of APDU commands for installing the .CA ...

  3. 微信小程序图片裁剪功能的实现

    文章目录 图片上传与处理 图片尺寸适配 图片显示与裁剪框 裁剪框的拖动与缩放 增加canvas并裁剪图片 保存图片到相册 总结 在之前的博文中,已经介绍了如何使用在前端开发中,实现较方便自由的图片裁剪 ...

  4. 微信小程序和QQ小程序图片安全内容检测接口之ThinkPHP实现

    由于相关管控,UGC小程序的开发者,必须要过滤违法违规内容(如黄). UGC小程序官方定义: 小程序中的功能或服务中,涉及用户将自己自定义编辑的文字.图片.音频.视频等内容通过小程序进行展示或提供给其 ...

  5. 小程序 图片上传php后台,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...

    微信小程序图片选择.上传到服务器.预览(php)实现实例 小程序实现选择图片.预览图片.上传到开发者服务器上 后台使用的tp3.2 图片上传 请求时候的header参考时可以去掉(个人后台验证权限使用 ...

  6. php 点击选择图片上传,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...

    微信小程序图片选择.上传到服务器.预览(PHP)实现实例 小程序实现选择图片.预览图片.上传到开发者服务器上 后台使用的tp3.2 图片上传 请求时候的header参考时可以去掉(个人后台验证权限使用 ...

  7. 微信小程序图片上传九宫格拖拽组件

    微信小程序图片上传&九宫格拖拽组件 前言 图片上传加九宫格拖拽是一个比较常用的组件,常用于发帖或者评论等内容上传模块,我这篇九宫格拖拽的思路是借鉴了一款优雅的小程序拖拽排序组件实现这篇文章 实 ...

  8. 微信小程序 图片上传与内容安全审核

    文章目录 原由 内容审核种类 小程序云开发 图片检测 创建云函数 编写图片检测代码 小程序图片处理 图片上传 图片压缩 云函数安全检测接入 文本检测 最后的坑 原由 之前有开发一个微信小程序,拥有图片 ...

  9. 微信小程序:上传的图片显示旋转问题

    问题? 开发中遇到微信小程序在上传照片后,会有一定概率旋转,查阅了资料之后,发现是和图片中携带的exif信息中的orientation这个参数有关. 小程序的页面实用webview渲染的,webvie ...

  10. 微信小程序实现上传视频功能(后端代码是java)

    微信小程序实现上传视频功能(后端代码是java) 1.前端 ​ wxml文件 <image bindtap="uploadVideo" length="3" ...

最新文章

  1. 【微信小程序之画布】四:手指触摸绘波浪线
  2. 基于K8S构建企业级Jenkins CI/CD平台实战(一) 之 环境搭建
  3. 报名 | 2019年第六届清华大学大数据社会科学讲习班
  4. 博为峰JavaEE技术文章 ——MyBatis 注解
  5. (二)Cacti监控
  6. python 三角形的三个边长a,b,c ,求三角形的面积?
  7. 基于行为树的新手引导设计
  8. swift版的GCD封装
  9. java网络编程 个人心得
  10. Flink keyby 数据倾斜问题处理
  11. 2019年文章精选,分类整理,顺带聊几句时间观念
  12. 《Python编程从入门到实践》记录之第2章 变量和简单数据类型总结(思维导图)
  13. Kafka+Log4j实现日志集中管理
  14. 【js】event(事件对象)详解
  15. 金融计量模型(十):协整和误差修正模型
  16. Python: sys.path.append()用法
  17. ddl是什么意思网络语_大学赶ddl是什么意思?DDL语句有什么功能?
  18. 什么是ARP?ARP作用和使用场景
  19. 打印机驱动无法安装到计算机是,打印机驱动在电脑哪个位置 打印机驱动安装不上怎么办【详解】...
  20. 【渝粤教育】国家开放大学2019年春季 1192高层建筑施工 参考试题

热门文章

  1. 利用SQL和Python分别实现人流量查询,考验逻辑思维的时候到了
  2. Python Tree库绘制多叉树的用法介绍
  3. 微信小程序页面间传递文本数据
  4. ReportViewer教程(6)-将报表浏览器与报表联系
  5. ASP.Net请求处理模式
  6. NLP《词汇表示方法(五)GloVe》
  7. cs224 -Lecture 1:Introduction and Word Vectors
  8. leetcode - 91. 解码方法
  9. java通过匹配合并数据(数据预处理)
  10. XGBoost原理与实例分析