shangchuan.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <template>
  2. <view>
  3. <!-- 上传文件组件 -->
  4. <u-upload :action="uploadUrl" :file-list="fileList" @after-read="afterRead" @oversize="onOversize"
  5. @delete="onDelete"></u-upload>
  6. </view>
  7. </template>
  8. <script>
  9. export default {
  10. data() {
  11. return {
  12. // 上传文件的服务器地址
  13. uploadUrl: 'https://your-upload-api.com/upload',
  14. // 文件列表
  15. fileList: [],
  16. };
  17. },
  18. methods: {
  19. // 文件读取后的钩子
  20. afterRead(event) {
  21. // 这里可以添加文件上传前的处理逻辑
  22. // 例如:检查文件大小、类型等
  23. // 然后执行上传操作
  24. this.uploadFile(event.file);
  25. },
  26. // 文件超出大小限制时触发
  27. onOversize(event) {
  28. this.$u.toast(`文件超出限制的大小`);
  29. },
  30. // 删除文件的钩子
  31. onDelete(file, index) {
  32. // 这里可以添加删除文件的处理逻辑
  33. // 例如:从服务器删除文件
  34. this.fileList.splice(index, 1);
  35. },
  36. // 上传文件的方法
  37. uploadFile(file) {
  38. // 创建formData
  39. const formData = new FormData();
  40. formData.append('file', file);
  41. // 这里使用uni.uploadFile进行文件上传,你也可以使用其他方式
  42. uni.uploadFile({
  43. url: this.uploadUrl,
  44. filePath: file,
  45. name: 'file',
  46. formData: formData,
  47. success: (uploadFileRes) => {
  48. console.log('uploadFile success:', uploadFileRes);
  49. // 上传成功后的处理逻辑,例如将文件地址保存到fileList
  50. },
  51. fail: (error) => {
  52. console.error('uploadFile fail:', error);
  53. // 上传失败的处理逻辑
  54. },
  55. });
  56. },
  57. },
  58. };
  59. </script>
  60. <style>
  61. </style>