el-upload上传多个文件,一次请求,Django接收

1、:file-list="fileList" :on-change="handleChange" 将文件赋值到fileList

2、 :auto-upload="false" 手动触发上传 写个按钮点击执行这个 this.$refs.upload.submit();

3、自己写上传,不会再触发上传成功或失败回调

4、 request.FILES.getlist('file') 获取上传的多个文件,循环读取写入文件中

复制代码
 <el-upload
     class="upload-demo"
     ref="upload"
     action=""
     :on-change="handleChange"
     :file-list="fileList"
     :auto-upload="false"

     >
     <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
     <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
     <div slot="tip" class="el-upload__tip">只能上传jmx/txt文件</div>
</el-upload>

<script>
    import axios from 'axios'
    export default{
        name:"StressTest",
            data() {
                     return {
                     fileList: []
                     }
            },
            components:{

            },
          
            methods:{
              handleChange(file, fileList) {
                console.log(file, fileList);
                this.fileList = fileList
                console.log('=====',this.fileList)
              },
              submitUpload() {  //上传
                    let formData = new FormData();  //  用FormData存放上传文件
                    this.fileList.forEach(file => {
                        formData.append('file', file.raw)
                    })
                    this.fileList = []
                    console.log('========',formData)
                    this.$axios.post('/uploadfile/', formData).then((res) => {
                        //手动上传无法触发成功或失败的钩子函数,因此这里手动调用
                      console.log('========','success')
                     
                       this.handleUploadSuccess()
                    }, (err) => {
                     
                       this.handleUploadError()
                    })
                },


               handleUploadSuccess(){
                this.$refs.upload.clearFiles()
                alert('上传成功')
               
                },
              handleUploadError(){
                 alert('上传失败')
             }

           // methods关闭
            }
    }
</script>

下面试着还是上次触发多次请求呢

复制代码
<el-upload
    class="upload-demo"
    ref="upload"
    action=""
    :on-change="handleChange"
    :on-success="handleUploadSuccess"
    :on-error="handleUploadError"
    :file-list="fileList"
    :auto-upload="false"
    :http-request="uploadFile"
    >
    <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
    <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
    <div slot="tip" class="el-upload__tip">只能上传jmx/txt文件</div>
</el-upload>


<script>
    import axios from 'axios'
    export default{
        name:"StressTest",
            data() {
                     return {
                     fileList: []
                    
                     }
            },
            components:{

            },
           
            methods:{
              submitUpload() {
                  this.$refs.upload.submit();
                },
              handleChange(file, fileList) {
                console.log(file, fileList);
                this.fileList = fileList
                console.log('=====',this.fileList)
              },
              uploadFile(file) {  //上传
                    let formData = new FormData();  //  用FormData存放上传文件
                    this.fileList.forEach(file => {
                        formData.append('file', file.raw)
                    })
                    console.log('========',formData)
                    this.$axios.post('/uploadurl/', formData).then((res) => {
                        //手动上传无法触发成功或失败的钩子函数,因此这里手动调用
                      console.log('========','success')
                       file.onSuccess(res)
                    }, (err) => {
                      file.onError(err)
                    })
              },


              handleUploadSuccess(response, file, fileList){
                this.$refs.upload.clearFiles()
                alert('上传成功')

              },
              handleUploadError(err, file, fileList){
                 alert('上传失败')
              }
         // methods关闭
         }
    }
</script>

def add_stressfile(request):
    data = {}
    for i in request.POST.lists():
        data[i[0]] = i[1][0]
    myFiles = request.FILES.getlist('file')
    print(myFiles)
    now = datetime.now()

    for myFile in myFiles:
        filename = str(now)[:-10].replace(' ', '_').replace(':', '') +'.txt'
        print(filename)
        file_path = os.path.join(settings.STRESS_ROOT, filename)
        fp = open(file_path, 'wb+')
        for i in myFile.chunks():
            # print(i)
            fp.write(i)
        fp.close()
       
    return HttpResponse(json.dumps({}), content_type='application/json')
相关推荐
像我这样帅的人丶你还11 小时前
别再让JS耽误你进步了。
css·vue.js
@yanyu66611 小时前
07-引入element布局及spring boot完善后端
javascript·vue.js·spring boot
王霸天11 小时前
💥别再抄网上的Scale缩放代码了!50行源码教你写一个永不翻车的大屏适配
前端·vue.js·数据可视化
悟空瞎说11 小时前
深入 Vue3 响应式:为什么有的要加.value,有的不用?从设计到源码彻底讲透
前端·vue.js
leo_messi9413 小时前
2026版商城项目(三)-- ES+认证服务
后端·python·django
SuperEugene13 小时前
前端通用基础组件设计:按钮/输入框/弹窗,统一设计标准|组件化设计基础篇
前端·javascript·vue.js·架构
我命由我1234514 小时前
在 React 项目中,可以执行 npm start 命令,但是,无法执行 npm build 命令
前端·javascript·vue.js·react.js·前端框架·json·ecmascript
aidou131414 小时前
Vue3自定义实现日期选择器(可单选或多选)
前端·javascript·vue.js·日期选择器·transition
忆琳15 小时前
Vue3 优雅解决单引号注入问题:自定义指令 + 全局插件双方案
vue.js·element
Ruihong16 小时前
放弃 Vue3 传统 <script>!我的 VuReact 编译器做了一次清醒取舍
前端·vue.js