将本地资源上传到服务器。客户端发起一个 HTTPS POST 请求,其中 content-type
为 multipart/form-data
。
以上传图片为例
示例代码:
wx.chooseImage({
success(res) {
const tempFilePaths = res.tempFilePaths
wx.uploadFile({
url: 'https://example.weixin.qq.com/upload', // 仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'file',
formData: {
user: 'test'
},
success(res) {
const data = res.data
// do something
}
})
}
})
后台接口处理接受数据
//图片上传七牛云接口
public function UploadFile(){
$param = request()->param();
$file=request()->file('file');
$controller='index';
$accKey='you key';
$secret='you sercret';
$space='qqcard';
$do='10088.cn';
$img = new Upload();
$url = $img->uploadImg($file,$controller,$accKey,$secret,$space,$do);
$filePath = $image->getRealPath();
return json(['url'=>$url]);
}
七牛云封装上传类
namespace Qiniu;
require_once 'autoload.php';
use Qiniu\Auth as Auth;
use Qiniu\Storage\BucketManager;
use Qiniu\Storage\UploadManager;
class Upload
{
/**
* 七牛云图片上传封装类
* @param $image //图片名称
* @param $controller //控制器名称
* @param $accKey //七牛云accessKey
* @param $secret //七牛云secretKey
* @param $space //七牛云上传空间
* @param $do //七牛云空间绑定的域名
* @return array|string //1.成功返回图片存储的全路径;2.返回错误信息
*/
public function uploadImg($image,$controller,$accKey,$secret,$space,$do){
$file = $image;
// 要上传图片的本地路径
$filePath = $file->getRealPath();
$ext = pathinfo($file->getInfo('name'), PATHINFO_EXTENSION); //后缀
//获取当前控制器名称
$controllerName = $controller;
// 上传到七牛后保存的文件名
$key =substr(md5($file->getRealPath()) , 0, 5). date('YmdHis') . rand(0, 9999) . '.' . $ext;
// 需要填写你的 Access Key 和 Secret Key
$accessKey = $accKey;
$secretKey = $secret;
// 构建鉴权对象
$auth = new Auth($accessKey, $secretKey);
// 要上传的空间
$bucket = $space;
$domain = $do;
$token = $auth->uploadToken($bucket);
// 初始化 UploadManager 对象并进行文件的上传
$uploadMgr = new UploadManager();
// 调用 UploadManager 的 putFile 方法进行文件的上传
list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
if ($err !== null) {
return ["err"=>1,"msg"=>$err];
} else {
//返回图片的完整URL
return "http://"."{$do}"."/".$key;
}
}
}