oss.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import Taro from '@tarojs/taro'
  2. import http from '@/http'
  3. import { ossSignatureUrl } from '@/http/api'
  4. import network from '@/class/Network';
  5. export async function uploadImageFile(imageInfo) {
  6. const signature = await _getSignature(1)
  7. if (!signature.accessId)
  8. return Promise.reject({ message: 'no signature accessId' })
  9. return _uploadFile(imageInfo.tempFilePath, signature)
  10. }
  11. function _getSignature(fileType) {
  12. return http.post(ossSignatureUrl, { fileType: fileType })
  13. .then((res: RequestType) => {
  14. const { data, code } = res
  15. if (code !== 0)
  16. return {}
  17. return data
  18. }).catch(err => {
  19. console.log(err)
  20. return {}
  21. })
  22. }
  23. function _uploadFile(fileTempPath, signature) {
  24. return new Promise((resolve, reject) => {
  25. Taro.uploadFile({
  26. filePath: fileTempPath,
  27. url: signature.host,
  28. name: 'file',
  29. formData: {
  30. key: signature.fileName,
  31. OSSAccessKeyId: signature.accessId,
  32. policy: signature.policy,
  33. signature: signature.signature,
  34. success_action_status: '200',
  35. name: fileTempPath,
  36. networkType: network.networkType
  37. },
  38. success() {
  39. resolve({
  40. fileUrl: signature.host + signature.fileName,
  41. objectKey: signature.fileName,
  42. host: signature.host,
  43. relativeUrl: signature.fileName
  44. })
  45. },
  46. fail(err) {
  47. reject(err)
  48. }
  49. })
  50. })
  51. }