vue2+element UI +django上传文件

22 篇文章 0 订阅

 前端

<template>
    <div>
         <el-container style="height:100%;">
   
               <el-container>
                  <el-main >
                      <el-row :gutter="20">
                          <el-col :span="8"><div class="grid-content bg-purple-light">
                              <span>点击打开<el-button type="text" @click="dialogFormVisible = true"> 新增语料</el-button>
                                        即可创建属于您的语料库!
                                        </span>
                              </div>
                          </el-col>
                          <el-col :span="8"><div class="grid-content bg-purple">
                          </el-col>
                          <el-col :span="8"><div class="grid-content bg-purple-light"></div></el-col>

                      </el-row>
                      <el-dialog
                          title="新增语料"
                          :visible.sync="dialogFormVisible"
                          width="40%">
                            <el-form ref="form" :model="form" label-width="150px">
                                 <el-form-item label="语料文件名称">
                                    <el-input v-model="form.filename" autocomplete="off" placeholder="请输入语料文件名称" ></el-input>
                                 </el-form-item>
                            </el-form>
                            <el-upload
                                  class="upload-demo"
                                  :data="{key:this.form.filename}"
                                  drag
                                  :before-upload="onBeforeUpload"
                                  :on-success="handleSuccess"
                                  :on-error="handleError"
                                  action="/add_yuliao/"
                                  multiple>
                                  <i class="el-icon-upload"></i>
                                  <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
                                  <div class="el-upload__tip" slot="tip">只能上传txt文件,且不超过500kb</div>
                            </el-upload>

                      </el-dialog>
                      
                      <br>
                      <br>

                   </el-main>
               </el-container>
         </el-container>
    </div>
</template>

<script>
    import axios from 'axios'

    export default{
        name:"YuLiao",
            data() {
                     return {
                        dialogFormVisible:false,
                        formLabelWidth:'120px',
                       
                        form: {
                            filename:'',
                        },


                     }
            },

            methods:{

                onBeforeUpload(){
                    if (this.form.filename === '') {
                        alert('请输入语料库名字!');
                        return false
                    console.log('可以上传')
                    return true
			        }
                },
                handleSuccess(response, file, fileList) {
                  alert('语料上传成功')
                  location.reload()
                  console.log('语料上传成功');
                },
                handleError(err, file, fileList) {
                  alert('语料上传失败')
                  location.reload()
                  console.error('语料上传失败');
                },
               
               
             // methods关闭
             },
            
    }
</script>

路由

path('admin/', admin.site.urls),
path('', TemplateView.as_view(template_name='index.html')),
path('add_yuliao/', add_yuliao),  # 添加语料库

后端

def add_yuliao(request):
    data = {}
    for i in request.POST.lists():
        data[i[0]] = i[1][0]
    myFile = request.FILES.get('file')
    now = datetime.now()
    filename = data['key'] + str(now)[:-10].replace(' ', '_').replace(':', '') + '.txt'
    file_path = os.path.join(settings.YULIAO_ROOT, filename)
    # print('here',file_path)
    fp = open(file_path, 'wb+')
    # print(fp)
    for i in myFile.chunks():
        # print(i)
        fp.write(i)
    fp.close()
    DB_yuliao.objects.create(name=data['key'], user=request.user.username, filename=filename)
    return get_yuliaolist(request)

model

class DB_yuliao(models.Model):
    name = models.CharField(max_length=50, null=True)  # 语料名字
    user = models.CharField(max_length=15, null=True)  # 语料创建者名字
    ctime = models.DateTimeField(auto_now=True)
    filename = models.CharField(max_length=1000, null=True)

    def __str__(self):
        return str(self.name) + str(self.ctime)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值