小程序

微信小程序多图上传

微信小程序多图上传,微信小程序图片上传

  //数据
  data: {
    imgUrl:[],
    imgname:[],
  },
 //上传方法 
 //<view class="pic_add" bindtap='imgupload'><image src="/images/add.png" mode="widthFix"></image></view>
 imgupload:function () {
    var that = this;
    var count = 6 - parseInt((that.data.imgUrl).length);
    if( count == false )
    {
      wx.showToast({
        title: '最多上传6张',
        duration: 1500
      })
      return false;
    }
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],      
      success: function (res) {
        var tempFilePaths = res.tempFilePaths;
        var i = 0; //第几个
        var length = res.tempFilePaths.length; //总共个数
        var successUp = 0; //成功个数
        var failUp = 0; //失败个数
        that.uploadImg(tempFilePaths, successUp, failUp, i, length);
      }
    })
  },
  uploadImg: function (tempFilePaths, successUp, failUp, i, length) {
    var that = this;
    var token = wx.getStorageSync('token');
     wx.uploadFile({
      url: _data.get_api_imgupload, //仅为示例,非真实的接口地址
      filePath: tempFilePaths[i],
      name: 'file',
      header: {
        'content-type': 'multipart/form-data',
        'Authorization': token
      },
      success: function (res) {
        //console.log(res);
       var srcArr = that.data.imgUrl;
           srcArr.push(data.data.src);
       var imgname = that.data.imgname;
           imgname.push(data.data.name);
           that.setData({
            imgUrl: srcArr,
            imgname: imgname
           });
      }, complete: () => {
        i++;
        if (i == length) {
          return;
        } else {  //递归调用uploadDIY函数
          if (!that.data.isuploaderror) {
            this.uploadImg(tempFilePaths, successUp, failUp, i, length);
          }
        }
      }
    })
  }, 
  //删除
  //<view class="pic_dle" data-id="{{key}}" data-name="{{imgname[key]}}" bindtap='remImg'><image src="/images/dle.png" mode="widthFix"></image></view>
  remImg:function (e) {
    var that = this;
    var dataset = e.currentTarget.dataset;
    var Index = dataset.id;
    var name = dataset.name;
    //通过`index`识别要删除第几条数据,第二个数据为要删除的项目数量,通常为1
    that.data.imgUrl.splice(Index, 1);
    that.data.imgname.splice(Index, 1);
    //渲染数据
    that.setData({
      imgUrl: that.data.imgUrl,
      imgname: that.data.imgname
    });
    var url = _data.get_api_imgdel;
    var data = {'name': name};
    _httpHelper.httpPost(url, data, function (res) {});
  },

PHP:laravel框架为案例

/**
 * 上传图片到本地临时目录
 */
public function uploadImgToTemp( Request $request )
{
    if( $request->file('file') == false )
    {
        responseData(\StatusCode::ERROR,'文件不存在');
    }
    try {
        $res = $request->file('file')->store('temp', 'temp');
        $name = explode('/',$res)[1];
        $obj = new \stdClass();
        $obj->src = "http://".$_SERVER['HTTP_HOST'].'/temp/'.$name;
        $obj->name = $name;
        responseData(\StatusCode::SUCCESS,'上传成功',$obj);
    } catch (Exception $e)
    {
        responseData(\StatusCode::ERROR,'上传失败');
    }
}

/**
 * @param string $status
 * @param string $messages
 * @param string $data
 * @param string $errorparam
 *
 */
function responseData( $status="", $messages="", $data="", $errorparam="" )
{
    $res["status"] = $status;//请求结果的状态
    $res["messages"] = $messages;//请求结果的文字描述
    $res["data"] = $data;//返回的数据结果
    if( $errorparam )
    {
        $res["errorparam"] = $errorparam; //错误参数对应提示
    }
    echo json_encode($res);
    die;
}


(3)
分享:

本文由:xiaoshu168 作者:xiaoshu发表,转载请注明来源!

相关阅读