我正在开发一个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我可以看到所有帖子的详细信息, 我想知道的是如何在收到邮件请求后将其保存在服务器端
答案 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
创建模型后,创建表单并继续。