从url拖放到输入文件

时间:2018-06-08 23:38:11

标签: html file upload drag-and-drop

我正在使用django在新闻网站上工作,我在其中管理有关文章的数据 我有id,内容,标题,类别和图像,这是一个FileField

class Article(models.Model):

    id=models.AutoField(primary_key=True)
    title=models.CharField(max_length=100,null=False,blank=False)
    category=models.ForeignKey(Category,null=False,blank=False)
    date=models.DateTimeField(auto_now_add=True)
    content = models.TextField(null=False, blank=False)
    resume=models.CharField(null=False,blank=False,max_length=400)
    image = models.FileField(verbose_name=blank=True)

我创建了一个包含有关文章

的数据的添加表单

表单包含一个输入文件

<input type="file" name="image">

表单正确提交数据并成功存储图像。 但是我注意到此输入仅适用于本地图像。 只有当我从计算机中手动选择图像或将其拖动到输入时,它才有效。

如果我将图片从网站拖到输入中,它就无法正常工作。

我想知道是否有可用于将图像从其他网站拖到文件输入的解决方案,因为每次我需要提交图像时我都需要下载它。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您需要获取图片的网址并使用urllib2下载 这是一个如何使用javascript获取网址的简单示例

$(document).on('dragover', function(e) {e.preventDefault();return false;});
    $(document).on('drop', function(e) {
        e.preventDefault();
        e.originalEvent.dataTransfer.items[0].getAsString(function(url){
            alert(url);
    });
});

以下是您可以下载并在模块中使用它的方法

from urllib.parse import urlparse
import requests
from django.core.files.base import ContentFile
from myapp.models import Photo

img_url = "url" #request.POST["url"] for example
name = urlparse(img_url).path.split('/')[-1]

photo = Article() # you need to use ImageFiled if it's just an image in your model

response = requests.get(img_url)
if response.status_code == 200:
    photo.image.save(name, ContentFile(response.content), save=True)