pics.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import log from './log';
  2. import interfaces from './interfaces';
  3. import { errObj } from '../../js/Msg.js';
  4. /**
  5. * 上传文件方法
  6. * @param {any} customId
  7. * @param {String} filePath
  8. * @param {Object} picsUpLoadData
  9. */
  10. export function UpLoadFile(customId, filePath, picsUpLoadData) { // 上传文件方法: (自定义上传标识, 文件路径, 自定义上传数据)
  11. log('自定义上传图片携带数据:' + JSON.stringify(picsUpLoadData));
  12. if (interfaces.baseUrl && filePath.indexOf(interfaces.baseUrl) != -1) { //域名替换机制: 判断是否是从后端获取的图片路径, 若是 替换域名字符串为空后resolve. 也可以根据customId动态控制, 不需要则删除此代码
  13. const replacePath = filePath.replace(interfaces.baseUrl, '');
  14. return Promise.resolve({
  15. data: replacePath
  16. });
  17. }
  18. let _this = this;
  19. let url = '';
  20. let formData = {};
  21. let name = '';
  22. switch (customId) { //判断该项pics类型自带的UpLoadFileType, 根据此值来确定不同的url、formData、name
  23. case 'UpLoadImage_1': //自定义的标识
  24. url = '';
  25. formData = {};
  26. name = '';
  27. break;
  28. default: //若无判断需求可直接写在这里
  29. url = interfaces.upLoadImg;
  30. formData = {};
  31. name = '';
  32. break;
  33. }
  34. if (!url) {
  35. uni.showToast({title:'上传文件的url不能为空', icon: 'none'});
  36. return Promise.reject({...errObj['102'], errMsg: '上传文件的url不能为空'});
  37. }
  38. if (!filePath) {
  39. uni.showToast({title:'上传文件的filePath不能为空', icon: 'none'});
  40. return Promise.reject({...errObj['102'], errMsg: '上传文件的filePath不能为空'});
  41. }
  42. const obj = {
  43. url,
  44. name,
  45. filePath
  46. }
  47. // #ifdef APP-PLUS
  48. if (plus.os.name.toLowerCase() === 'ios') {
  49. if(Object.keys(formData).length > 0) obj.url = renderUrlData(obj.url, formData);
  50. }else{
  51. obj.formData = formData;
  52. }
  53. // #endif
  54. // #ifndef APP-PLUS
  55. obj.formData = formData;
  56. // #endif
  57. return uni.uploadFile(obj);
  58. }
  59. /**
  60. * 拼接上传返回数据方法
  61. * @param {String} vals
  62. * @param {String} val
  63. */
  64. export function pics_splice(vals, val) { // 拼接图片上传返回后的数据, vals是拼接后的数据, val是新添项
  65. if (typeof(vals) !== 'string') { // 第一次传进来是一个数组
  66. vals = val || '|'; // 可更改分隔符
  67. return vals;
  68. }
  69. vals += val ? '|' + val : '|';
  70. return vals; // 必须return vals
  71. }
  72. function renderUrlData(u, d) {
  73. let c = '';
  74. let n = 0;
  75. if (d)
  76. for (let i in d) {
  77. if (n > 0)
  78. c += '&' + i + '=' + d[i];
  79. else
  80. c += '?' + i + '=' + d[i];
  81. ++n;
  82. }
  83. return u + c;
  84. }