小程序前端
// 授权获取用户头像保存到后台数据库
uploadImage: function () {
var that = this;
var headImg = that.wxUser.userInfo.avatarUrl;
// 根据链接获取图片信息转成临时文件
wx.getImageInfo({
src: headImg,
success: function (sres) {
// 上传图片
wx.uploadFile({
// 此处填写你的接口
url: that.config.appConfig.apiRoot + that.api.uploadImage,
filePath: sres.path,
name: "file",
success: function (res) {
console.log("成功")
console.log(res)
var jsonObj = JSON.parse(res.data);
console.log(jsonObj)
},
fail: function (rev) {
console.log(rev);
}
});
},
fail: function (srev) {
console.log("ERROR");
console.log(srev);
}
});
},
.net后台获取链接图片
[HttpPost]
public ActionResult UploadImage()
{
try
{
var base64Url = "";
var requestFiles = Request.Files;
if (requestFiles.Count > 0)
{
Stream stream = requestFiles[0].InputStream;
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
base64Url = Convert.ToBase64String(bytes);//byte[]转base64
}
return Json(new CommonResult { Result = true, Data = base64Url });
}
catch (Exception e)
{
throw e;
}
}
注意:后台的Request为
如果是Microsoft.AspNetCore.Http
则这样使用:
[HttpPost]
public CommonResult UploadImage()
{
try
{
string base64Url = "";
var requestFiles = HttpContext.Request.Form.Files;
if (requestFiles.Count > 0)
{
// 以下注释代码没有实践 应该是这样 可以百度下
/*
Stream stream = requestFiles[0].OpenReadStream();
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
base64Url = Convert.ToBase64String(bytes);//byte[]转base64
*/
}
return new CommonResult() {
Result = true,
Data = base64Url
};
}
catch (Exception e)
{
throw e;
}
}
?小程序显示图片可以:
<image src="data:image/png;base64,{{base64Url}}"></image>
?需要注意下?base64Url 有没有换行符,如果有的话在js里面正则去掉
base64Url = base64Url.replace(/[\r\n]/g, "")
另外补充一点:
得到base64的字符串格式后,可以直接在浏览器打开,前缀加上?data:image/png;base64,
?后面直接拼接base64字符串
以上完结。
|