uploadFile.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import axios from 'axios'
  2. export default {
  3. mounted() {
  4. },
  5. data() {
  6. return {
  7. uploadInfo: {},
  8. options: {
  9. server: 'https://v0.api.upyun.com/programmerinnfile',
  10. auto: true,
  11. compress: null,
  12. },
  13. upload_id: '',
  14. file: null,
  15. post_url: ''
  16. }
  17. },
  18. methods: {
  19. apiPrepareUpload(file, cb) {
  20. let uploadInfo = null;
  21. let formData = new FormData()
  22. formData.append("filename", file.name);
  23. formData.append("target", '{"type":3}');
  24. this.$axios.post('/file/prepareUpload', formData,{
  25. headers: { "Content-Type": "multipart/form-data" }
  26. }).then( (data) => {
  27. this.uploadInfo = data.data.data.post_params;
  28. this.post_url = data.data.data.post_url;
  29. this.upload_id = data.data.data.upload_id;
  30. this.apiSend(file, cb)
  31. })
  32. return uploadInfo;
  33. },
  34. apiSend(file, cb) {
  35. let formData = new FormData()
  36. formData.append("file", file);
  37. formData.append("name", file.name);
  38. for (let key in this.uploadInfo) {
  39. console.log('key1', key)
  40. formData.append(key, this.uploadInfo[key])
  41. }
  42. axios.post(this.options.server, formData, {
  43. headers: { "Content-Type": "multipart/form-data" }
  44. }).then(res=>{
  45. this.returnData = res.data
  46. this.uploadCb(cb)
  47. })
  48. },
  49. uploadCb(cb) {
  50. let p = {
  51. upload_id: this.upload_id,
  52. return_data: JSON.stringify(this.returnData)
  53. }
  54. this.$axios.post('/file/uploadCallback', p).then(res=>{
  55. cb && cb(res)
  56. })
  57. }
  58. }
  59. }