今天花了一天時間,研究了微信小程序的圖片上傳功能。總體思路爲:小程序讀取手機相冊或者攝像頭拍照,然後將圖片post到web api。api接收圖片信息,存到硬盤,然後將路徑存儲在數據庫中。
問題:1、首先要解決跨域問題,這個在mvc5的web api的默認配置中修改即可。
2、post提交問題,在這裏我遇到了大坑,往上研究了一大圈,各種五穀雜糧的代碼,基本上都是浪費流量。我的解決方案一會發出。
解決了上面兩個問題,直接上代碼:
wx.chooseImage({
success: function(res) {
var tempFilePaths = res.tempFilePaths
wx.uploadFile({
url: 'https://。。。。/upload', //僅爲示例,非真實的接口地址
filePath: tempFilePaths[0],
name: 'file',
formData:{
'user': 'test'
},
success: function(res){
var data = res.data
//do something
}
})
}
})
使用上面的代碼就可以完成圖片的上傳,url修改爲你的api地址。
然後是web api的代碼,奉獻核心代碼:
public IHttpActionResult Post()
{
HttpFileCollection files = HttpContext.Current.Request.Files;
foreach (string key in files.AllKeys)
{
HttpPostedFile file = files[key];//file.ContentLength文件長度
if (string.IsNullOrEmpty(file.FileName) == false)
file.SaveAs(HttpContext.Current.Server.MapPath("~/imgcoll/") + file.FileName);
}
return Ok("success2");
}
好了,這是我花了一天總結的,看起來很簡單,實際上真的很費功夫,希望和我一樣被困擾的同仁能夠順利的完成。