upload-file.uvue 3.2 KB
Newer Older
1
<template>
DCloud-WZF's avatar
DCloud-WZF 已提交
2 3
  <!-- #ifdef APP -->
  <scroll-view style="flex: 1">
taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
4
  <!-- #endif -->
DCloud-WZF's avatar
DCloud-WZF 已提交
5 6 7 8
    <view>
      <page-head :title="title"></page-head>
      <view class="uni-padding-wrap uni-common-mt">
        <view class="demo">
taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
9 10
          <image v-if="imageSrc" :src="imageSrc" class="image" mode="widthFix"></image>
          <text v-else class="uni-hello-addfile" @click="chooseImage">+ 选择图片</text>
DCloud-WZF's avatar
DCloud-WZF 已提交
11 12 13
        </view>
      </view>
    </view>
taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
14
  <!-- #ifdef APP -->
DCloud-WZF's avatar
DCloud-WZF 已提交
15 16
  </scroll-view>
  <!-- #endif -->
17 18
</template>
<script>
taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
  export default {
    data() {
      return {
        title: 'uploadFile',
        imageSrc: '',
        task: null as UploadTask | null,
        //自动化测试例专用
        jest_result: false,
      }
    },
    onLoad() {
    },
    onUnload() {
      this.imageSrc = '';
      uni.hideLoading();
      this.task?.abort();
    },
    methods: {
      chooseImage: function () {
        uni.chooseImage({
          count: 1,
          sizeType: ['compressed'],
          sourceType: ['album'],
          success: (res) => {
            console.log('chooseImage success, temp path is', res.tempFilePaths[0])
            var imageSrc = res.tempFilePaths[0]
            uni.showLoading({
              title: '上传中'
            })
            this.task = uni.uploadFile({
              url: 'https://unidemo.dcloud.net.cn/upload', //仅为示例,非真实的接口地址
              filePath: imageSrc,
              name: 'file',
              formData: {
                'user': 'test'
              },
              success: (res) => {
                console.log('uploadImage success, res is:', res)
                uni.hideLoading();
                uni.showToast({
                  title: '上传成功',
                  icon: 'success',
                  duration: 1000
                })
                this.imageSrc = imageSrc
              },
              fail: (err) => {
                console.log('uploadImage fail', err);
                uni.hideLoading();
                uni.showModal({
                  content: err.errMsg,
                  showCancel: false
                });
              },
            });
          },
          fail: (err) => {
            console.log('chooseImage fail', err)
          }
        })
      },
      //自动化测试例专用
      jest_uploadFile() {
        const imageSrc = "/static/uni.png";
        this.task = uni.uploadFile({
          url: 'https://unidemo.dcloud.net.cn/upload', //仅为示例,非真实的接口地址
          filePath: imageSrc,
          name: 'file',
          formData: {
            'user': 'test'
          },
          success: () => {
            this.jest_result = true;
          },
          fail: () => {
            this.jest_result = false;
          },
        })
      }
98
    }
taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
99
  }
100 101 102
</script>

<style>
taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
103 104 105
  .image {
    width: 100%;
  }
106

taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
107 108 109 110 111 112
  .demo {
    background: #fff;
    padding: 50rpx;
    justify-content: center;
    align-items: center;
  }
113

taohebin@dcloud.io's avatar
taohebin@dcloud.io 已提交
114 115 116 117 118 119 120 121 122
  .uni-hello-addfile {
    text-align: center;
    background: #fff;
    padding: 50rpx;
    margin-top: 10px;
    font-size: 38rpx;
    color: #808080;
  }
</style>