直接贴代码:
ChooseImage() {//上传图片
wx.chooseImage({
count: 4, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: (res) => {
if (this.data.imgList.length != 0) {
let that=this
//上传图片到自己服务器
wx.uploadFile({
url: 'http://127.0.0.1:2333/api/img/upload',
filePath: res.tempFilePaths[0],
name: 'file',
success (res) {
//服务器返回图片地址,把图片地址给粘贴上去
let data=JSON.parse(res.data)
console.log(data)
if(data.code==1){
that.setData({
imgList: that.data.imgList.concat(data.data.src)
})
console.log(data.data.src)
}
}
})
} else {
this.setData({
imgList: res.tempFilePaths
})
}
}
});
},
go文件如下: 我用的是echo框架
func UploadFile(c echo.Context)error{
//接收上传的文件
file, err := c.FormFile("file")
if err != nil {
return c.JSONBlob(http.StatusOK, []byte(`{"code":0,"data":[],"msg":"没有文件"}`))
}
//打开用户上传的文件
src, err := file.Open()
if err != nil {
return c.JSONBlob(http.StatusOK, []byte(`{"code":0,"data":[],"msg":"打开文件失败"}`))
}
//获取文件后缀
suffix := common.FindMatch("(\.[a-z]+)$", file.Filename)
//如果没有就自己设置一个
if suffix == "" {
suffix = ".jpg"
}
//创建文件
year := "static/images/" + strconv.Itoa(time.Now().Year())
month := strconv.Itoa(int(time.Now().Month()))
filename := year + "/" + month + "/" + time.Now().Format("150405") + suffix
err = common.CreatePath(year + "/" + month)
if err == nil {
dst, err := os.Create(filename)
defer dst.Close()
if err == nil {
if _, err := io.Copy(dst, src); err == nil {
//获取服务器地址
option:=sql.GetConfig("site")
//获取图片地址
src := option["server"] + "/"+ filename
return c.JSONBlob(http.StatusOK, []byte(`{"code":1,"data":{"src":"`+src+`"},"msg":"上传文件成功"}`))
}
}
}
return c.JSONBlob(http.StatusOK, []byte(`{"type":"error","msg":"上传文件失败"}`))
}