Skip to main content
 首页 » 编程设计

python之从请求发送到 django 应用程序的 url 下载文件

2024年08月25日29shihaiming

在我的 Django 应用程序中,我收到了一个像这样的 JSON 请求:

{     
  "item1": false, 
  "item2": false, 
  "item3": "value", 
  "url": "http://downloadlink.example.net" 
} 

我必须保存除 url 之外的所有数据,我只需要通过它下载文本文件并将其保存在服务器上。如何进行下载部分?

查看代码:

class Collect(View): 
@csrf_exempt 
def dispatch(self, request, *args, **kwargs): 
    return super(Collect, self).dispatch(request, *args, **kwargs) 
 
def post(self, request): 
    data = json.loads(request.body.decode()) 
    try: 
        item1 = data["item1"] 
        item2 = data["item2"] 
        item3 = data["item3"] 
        url = data["url"] 
        new_row = ModelName( 
            item1=item1, 
            item2=item2, 
            item3=item3, 
        ) 
        new_row.save() 
    except Error: 
        return HttpResponse("Unable to save") 
 
    return HttpResponse("Saved") 

请您参考如下方法:

所以基本上你可以使用urllib图书馆,特别是它的 urlretrieve函数先将文件保存在本地临时文件夹中,然后您可以将其保存到任何您想要的地方。

import urllib 
response = urllib.urlretrieve(url) 
contents = open(response[0]).read() 
f = open('filename.ext','w') 
f.write(contents) 
f.close() 

这是如何从链接保存文件的基本示例。当您保存文件时,您应该包括完整路径,因此请确保在您的设置文件中创建一个 BASE_DIR 常量。您可以进一步在您的数据库中创建一个 FileField 或 ImageField 表,阅读 here更多示例。