.net mvc 使用盛派Senparc.Weixin 上传图片接口
首先获取微信签名,Controller代码:
public ActionResult MutualHelpAdd()
{
var jssdkUiPackage = JSSDKHelper.GetJsSdkUiPackage(WeChatParameter._appID, WeChatParameter._appSecret, Request.Url.AbsoluteUri);
ViewBag.AppId = WeChatParameter._appID;
ViewBag.Timestamp = jssdkUiPackage.Timestamp;
ViewBag.NonceStr = jssdkUiPackage.NonceStr;
ViewBag.Signature = jssdkUiPackage.Signature; return View();
}
视图代码:
wx.config({
//debug: true,
appId: '@ViewBag.AppId',
timestamp: '@ViewBag.Timestamp',
nonceStr: '@ViewBag.NonceStr',
signature: '@ViewBag.Signature',
jsApiList: [
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage'
]
});
wx.ready(function () {
// 5 图片接口
// 5.1 拍照、本地选图
var images = {
localId: [],
serverId: []
};
document.querySelector('#btnAddImage').onclick = function () {
wx.chooseImage({
count: , // 默认9,设置可以同时上传的图片数量
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
images.localId = res.localIds;
//alert('已选择 ' + res.localIds.length + ' 张图片');
var i = , length = images.localId.length;
images.serverId = [];
function upload() {
wx.uploadImage({
localId: images.localId[i],
success: function (res) {
i++;
//alert('已上传:' + i + '/' + length);
images.serverId.push(res.serverId);
//TODO: res.serverId 就是 media_id,根据它去微信服务器读取图片数据:自定义上传到自己服务器
var imageJson = $("#hdImageJson").val();
$.ajax({
type: 'post',
url: '/Common/AddImage',
async: false,
data: {
media_id: res.serverId,
imageJson: imageJson,
folderName:"MutualHelp"
},
success: function (data) {
if (data.ImageUrl != '') {
// 返回 图片在我们自己的服务器的url
var img = "<img class='task_image' src='/images/" + data.ImageUrl + "'/>";
$("#imgList").append(img);
$("#hdImageJson").val(data.ImageJson);
}
},
error: function (err) {
}
})
if (i < length) {
upload();
}
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
}
upload();
}
});
};
});
图片保存到本地服务器方法:
/// <summary>
/// 公用 微信 上传图片方法
/// </summary>
/// <param name="media_id"></param>
/// <param name="imageJson"></param>
/// <returns></returns>
public JsonResult AddImage(string media_id, string imageJson,string folderName)
{
var imgUrl = "";
try
{
List<ImageList> curImageResult;
if (!string.IsNullOrEmpty(imageJson))
{
curImageResult = JsonConvert.DeserializeObject<List<ImageList>>(imageJson);
}
else
{
curImageResult = new List<ImageList>();
}
var accessToken = AccessTokenContainer.TryGetAccessToken(WeChatParameter._appID, WeChatParameter._appSecret); System.IO.MemoryStream stream = new System.IO.MemoryStream();
MediaApi.Get(accessToken, media_id, stream);
Image img = Image.FromStream(stream);
var imgName = DateTime.Now.ToString("yyyyMMddhhss");
var fileSaveUrl =string.Format(FilePath + "/{0}/" + imgName + ".jpg", folderName);
imgUrl = string.Format("/{0}/" + imgName + ".jpg", folderName);
img.Save(fileSaveUrl); var imageEntity = new ImageList
{
ImageKey = imgName,
ImageUrl = imgUrl,
UploadTime = DateTime.Now
};
curImageResult.Add(imageEntity); imageJson = JsonConvert.SerializeObject(curImageResult);
}
catch (Exception ex)
{
imgUrl = "";
} var result = new
{
ImageJson = imageJson,
ImageUrl = imgUrl
};
return Json(result);
}
.net mvc 使用盛派Senparc.Weixin 上传图片接口的更多相关文章
- Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
Senparc.Weixin.MP SDK已经涵盖了微信6.x的所有公共API. 整个项目的源代码以及已经编译好的程序集可以在这个项目中获取到:https://github.com/JeffreySu ...
- 微信支付 V3 开发教程(一):初识 Senparc.Weixin.TenPayV3
前言 我在 9 年前发布了 Senparc.Weixin SDK 第一个开源版本,一直维护至今,如今 Stras 已经破 7K,这一路上得到了 .NET 社区的积极响应和支持,也受到了非常多的宝贵建议 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明
上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明>介绍了如何通过通用接口获取AccessToken,有了AccessToken,我们就可以来操作 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十):使用菜单消息功能
在<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>教程中,我们介绍了如何使用“客服接口”,即在服务器后台,在任意时间向微信发送文本.图文.图片等不 ...
- Senparc.Weixin SDK v5.0 升级公告
经过五年半的持续维护,Senparc.Weixin SDK 逐步丰满和完善,在升级的过程中,我们为基础库(Senparc.Weixin.dll)加入了许多通用的功能,例如加密/解密算法.通用缓存方法等 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试
最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):在 .NET Core 2.0/3.0 中使用 MessageHandler 中间件
概述 在 <Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler> 中我们已经了解了 MessageHandler 的运行原理和使用方法 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证
要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(四):Hello World
============= 以下写于2013-07-20 ============= 这一篇文章其实可以写在很前面,不过我还是希望开发者们尽多地了解清楚原理之后再下手. 通过上一篇Senparc.W ...
随机推荐
- Shell命令-文件及目录操作之touch、tree
文件及目录操作 - touch.tree 1.touch:创建文件或更改文件时间戳 touch命令的功能说明 touch命令用于创建新的空文件或改变已有文件的时间戳属性. touch命令的语法格式 t ...
- MySQL字符串进行加减乘除的运算
原文链接:https://www.jianshu.com/p/2ab2c0dc3cb5 在mysql当中,字符串类型间进行加减乘除运算的时候,会截取字符串以数字开头的那一部分数字进行运算,如果字符串前 ...
- object.observe被废弃了怎么办
用新的 Proxy 具体见:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy
- [SimplePlayer] 8. 音视频同步
音频与视频在播放当中可能会由于种种原因(如:音视频并非在同一时间开始播放,或视频由于解码任务繁重导致输出图像延迟等)导致音频与视频的播放时间出现偏差,这种就是音视频的同步问题,本文会对音视频同步进行讨 ...
- 获取本地的jvm信息,进行图形化展示
package test1; import java.lang.management.CompilationMXBean; import java.lang.management.GarbageCol ...
- tmux 使用说明
安装Mac:brew install tmux若未安装libevent,需要先brew install libeventCentos:yum -y install tmuxUbuntu:apt-get ...
- Java基础 -- final关键字
在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...
- 应用调试(四)系统调用SWI
目录 应用调试(四)系统调用SWI 系统调用 SWI代码片段分析 分析sys_write 构造sys_hello 应用程序调用SWI 嵌入汇编语法 测试APP 参考 title: 应用调试(四)系统调 ...
- Git 分支 (二)合并
分支的新建与合并 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流. 你将经历如下步骤:1. 开发某个网站.2. 为实现某个新的需求,创建一个分支.3. 在这个分支上开 ...
- makefile $@, $^, $<, $? 表示的意义
ref:https://www.cnblogs.com/gamesun/p/3323155.html $@ 表示目标文件$^ 表示所有的依赖文件$< 表示第一个依赖文件$? 表示比目标还 ...