uploadFile.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import request from '@/request'
  2. // import { readImg, compressImg } from "./compress"
  3. import {compressAccurately} from 'image-conversion'
  4. export default {
  5. // 上传图片标识 0头像 1身份证 2题库 3指南指引图片 4广告图片 5身份证或学信网图片 6文件excel,word,zip等
  6. //file: 类似this.$refs.file.files[0]
  7. upload: function (file, int, data,compressImgStatus = true) {
  8. return new Promise(async (resolve, reject) => {
  9. if (typeof file != 'object') {
  10. resolve(file)
  11. return;
  12. }
  13. var datas = {
  14. imageStatus: int || 0,
  15. ...data
  16. }
  17. //图片压缩
  18. if (file.type.indexOf("image") !== -1 && compressImgStatus) {
  19. file = await compressAccurately(file, 30)
  20. // const img = await readImg(file)
  21. // file = await compressImg(img, file.type, 256, 256)
  22. }
  23. request.getPolicy(datas).then(res => {
  24. var ossToken = res.data.resultContent
  25. // const filename = file.name;
  26. // const fileExtension = filename.split('.').pop().toLowerCase()
  27. let formData = new FormData()
  28. // formData.append('key', ossToken.dir + "." + fileExtension); //存储在oss的文件路径
  29. formData.append('key', ossToken.dir); //存储在oss的文件路径
  30. formData.append('OSSAccessKeyId', ossToken.accessid); //accessKeyId
  31. formData.append('policy', ossToken.policy); //policy
  32. formData.append('Signature', ossToken.signature); //签名
  33. formData.append('callback', ossToken.callback); //回调
  34. formData.append('success_action_status', 200); //成功后返回的操作码
  35. //如果是base64文件,那么直接把base64字符串转成blob对象进行上传就可以了
  36. formData.append("file", file);
  37. request.uploadFile(ossToken.host, formData).then(resp => {
  38. if (resp.resultContent && Number(resp.resultContent.size) > 0) {
  39. resolve(ossToken.dir)
  40. } else {
  41. reject("上传回调失败")
  42. }
  43. }).catch(error => {
  44. reject(error)
  45. })
  46. }).catch(err => {
  47. reject(err)
  48. })
  49. })
  50. },
  51. }