You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.3 KiB

6 months ago
  1. import http from './http.js'
  2. function upload(files, callback) {
  3. const uploadResults = [];
  4. let count = files.length;
  5. files.forEach(file => {
  6. http.get("/oss/get", {}, (res) => {
  7. console.log('get', res);
  8. const sign = res.data;
  9. doUpload(sign, file.path, (result) => {
  10. uploadResults.push(result);
  11. count--;
  12. if (count === 0) {
  13. callback(uploadResults);
  14. }
  15. });
  16. });
  17. });
  18. }
  19. function doUpload(sign, filePath, callback, module = 'upload') {
  20. const key = `${module}/${new Date().getTime()}.png`;
  21. const prk = sign.host + "/" + key;
  22. uni.uploadFile({
  23. url: sign.host,
  24. filePath,
  25. name: 'file',
  26. formData: {
  27. key,
  28. policy: sign.policy,
  29. OSSAccessKeyId: sign.accessKeyId,
  30. signature: sign.signature,
  31. success_action_status: '200'
  32. },
  33. success: (res) => {
  34. console.log('oss', prk);
  35. callback(prk);
  36. },
  37. fail: (err) => {
  38. console.log('oss', err);
  39. callback({ error: err });
  40. }
  41. });
  42. }
  43. // 调用示例
  44. //upload(files, (uploadUrls) => {
  45. // console.log('All upload URLs:', uploadUrls);
  46. //});
  47. export default {
  48. upload: upload
  49. }