本人采用的是,将文件数据先传递到Django后端再进行上传处理的方法。

上传腾讯云使用的是官方python文档

vue前端

前端具体讲解请参考另一篇文章----> 传送门

Django后端上传

里面涉及到的私人身份校验数据均为类中的变量,请自行配置,为节省篇幅给出部分代码,大致思路不变。

    def loginCos(self):
        logging.basicConfig(level=logging.INFO, stream=sys.stdout)
        config = CosConfig(Region=self.region, SecretId=self.secret_id, SecretKey=self.secret_key, Token=self.token,
                           Scheme=self.scheme)
        client = CosS3Client(config)
        return client


	@action(methods=['post'], detail=False)
    @csrf_exempt
    def add_resource(self, request, *args, **kwargs):
        file = request.FILES.get("file", None)
        desc = request.data.get('desc', None)

        if file and desc
            filetype = os.path.splitext(str(file))[1]
            filename = uid + filetype
            client = self.loginCos()
            response = client.put_object(
                Bucket=self.Bucket,
                Body=file,
                Key=filename,
                ContentType=type,
                StorageClass='STANDARD',
                EnableMD5=False
            )
            if (response['ETag']):
                fileUrl = self.baseurl + filename
                models.Source.objects.create(uploader=uploader, memory=size, name=name + filetype,
                                             desc=desc, date=datetime.now(), file=fileUrl, uid=filename)
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐