分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

requests下载文件并重新上传

发布时间:2023-09-06 02:33责任编辑:熊小新关键词:暂无标签
import reimport requestsfrom io import BytesIOfrom django.core.files.uploadedfile import InMemoryUploadedFileu = "http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+"def match_by_re(str): ???pattern = re.compile(u, re.S) ???res = pattern.findall(string=str) ???if res: return res[0]def get_suffix(url): ???res = url.split(‘.‘) ???return res[-1]def get_name_content_type(url): ???suffix = get_suffix(url) ???image_suffix = [‘BMP‘, ‘JPG‘, ‘JPEG‘, ‘PNG‘, ‘GIF‘] ???text_suffix = [‘JSON‘] ???audio_suffix = [‘ACT‘, ‘REC‘, ‘AAC‘, ‘SC4‘, ‘DVF‘, ‘MSC‘, ‘WMA‘, ‘MP3‘, ‘WAV‘] ???name = ‘temp.{}‘.format(suffix) ???if suffix.upper() in image_suffix: ???????return name, ‘image/jpeg‘ ???elif suffix.upper() in text_suffix: ???????return name, ‘application/json‘ ???elif suffix.upper() in audio_suffix: ???????return name, ‘audio/mp3‘class DownloadTool(): ???def __init__(self): ???????self.los = {} ???def get_stream_data(self, url): ???????stream_data = self.los.get(url) ???????return stream_data ???def stream_download(self, url): ???????url = match_by_re(url) ???????stream = self.get_stream_data(url) ???????if stream: ???????????return stream ???????r = requests.get(url, stream=True) ???????self.los[url] = r.content ???????return r.content ???def get_file_obj(self, url): ???????stream = self.stream_download(url) ???????fd = BytesIO(stream) ???????name, content_type = get_name_content_type(url) ???????file_obj = InMemoryUploadedFile(fd, ‘url‘, name, content_type, len(stream), charset=‘utf-8‘) ???????return file_obj

file_obj时Django的上传文件对象,可以作为model表中FileField字段的值

requests下载文件并重新上传

原文地址:https://www.cnblogs.com/li1992/p/10438247.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved