本人采用的是,将文件数据先传递到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)