python脚本通过http post处理上传的文件

时间:2015-02-23 09:38:38

标签: python django post

我正在开发一个django项目,我尝试通过http post request上传文件。

我的上传脚本是:

url=r'http://MYSITEURL:8000/upload'
files={'file':open('1.png','rb')}
r=requests.post(url,files=files)

我的接收方在我的django网站上,在views.py中:

def upload_image(request):
from py_utils import open_py_shell;open_py_shell.open_py_shell()

当我提出要求时.FILES我可以看到所有帖子的详细信息, 我想知道的是如何在收到邮件请求后将其保存在服务器端

2 个答案:

答案 0 :(得分:1)

request.FILES中的内容是InMemoryUploadedFile。您只需将其保存在文件系统中的某个位置即可。

这是从Django docs获取的示例方法:

def handle_uploaded_file(f):
    with open('some/file/name.txt', 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)

答案 1 :(得分:0)

我认为你可以很好地使用模型。这将是Django的正确方法。以下是 models.py 文件的示例:

from django.db import models
from django.conf import settings

import os
import hashlib


def instanced_file(instance, filename):
    splitted_name = filename.split('.')
    extension = splitted_name[-1]
    return os.path.join('files', hashlib.md5(str(instance.id).encode('UTF-8')).hexdigest() + '.' + extension)

class File(models.Model):
    name = models.FileField('File', upload_to = instanced_file)

    def get_file_url(self):
        return '%s%s' % (settings.MEDIA_URL, self.name)

    def __str__(self):
        return self.name

    def __unicode__(self):
        return self.name

创建模型后,创建表单并继续。