【问题标题】:Open a remote file via urlopen and add it to a FileField通过 urlopen 打开一个远程文件并将其添加到 FileField
【发布时间】:2012-06-19 08:11:56
【问题描述】:

我有一个类似的问题: how to manually assign imagefield in Django

除了我的文件来自远程主机并且我只得到一个 url,所以类似于:

class Book(models.Model):
    name = models.CharField()
    url = models.URLField()
    file = models.FileField(null=True, blank=True, editable=False)

class BookForm(forms.ModelForm):
    class Meta:
        model = Book

def view(request):
    if request.POST:
        form = BookForm()
        if form.is_valid():
            request = form.instance.source_url
            try:
                f = urlopen(request)
                # ...create open file obj...
                form.instance.local_file.save(form.instance.ref, f.read(), True)

            except Exception:
                print 3

在这种情况下,我应该如何将f 转换为打开的文件对象,以便保存其内容?

【问题讨论】:

    标签: python django


    【解决方案1】:

    使用requests 很简单。

    import requests
    from StringIO import StringIO
    
    r = requests.get(file_url)
    f = StringIO(r.content)
    
    # f.read()
    

    最后,正如所写 - 当您重新分配传入的 request 时,您的代码将导致问题。您应该将这一行 request = form.instance.source_url 更改为 file_url = from.instance.source_url 之类的其他内容。

    【讨论】:

      猜你喜欢
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 2014-02-10
      • 2012-08-11
      • 2017-12-24
      • 1970-01-01
      相关资源
      最近更新 更多