微信小程序 ES6Promise.all批量上传文件实现代码
客户端
Page({ onLoad: function() { wx.chooseImage({ count: 9, success: function({ tempFilePaths }) { var promise = Promise.all(tempFilePaths.map((tempFilePath, index) => { return new Promise(function(resolve, reject) { wx.uploadFile({ url: 'https://www.mengmeitong.com/upload', filePath: tempFilePath, name: 'photo', formData: { filename: 'foo-' + index, index: index }, success: function(res) { resolve(res.data); }, fail: function(err) { reject(new Error('failed to upload file')); } }); }); })); promise.then(function(results) { console.log(results); }).catch(function(err) { console.log(err); }); } }); } });
服务端
<?php use IlluminateHttpRequest; Route::post('/upload', function (Request $request) { if ($request->photo->isValid()) { $request->photo->storeAs('images/foo/bar/baz', $request->filename . '.' . $request->photo->extension()); return ['success' => true, 'index' => $request->index]; } });