目前我正在从ftp服务器将文件保存到loal目录。但我想转而使用ImageFields来使事情更易于管理。
这是当前的代码段
file_handle = open(savePathDir +'/' + fname, "wb")
nvcftp.retrbinary("RETR " + fname, _download_cb)
file_handle.close()
return savePathDir +'/' + fname
这是我第一次尝试匹配。我现在正在为兼容性而返回路径。稍后我将通过模型正确访问存储的文件。
new_image = CameraImage(video_channel = videochannel,timestamp = file_timestamp)
file_handle = new_image.image.open()
nvcftp.retrbinary("RETR " + fname, _download_cb)
file_handle.close()
new_image.save()
return new_image.path()
这是对的吗? 我对应该处理file_handle和ImageField“image”
的顺序感到困惑答案 0 :(得分:1)
您遗失_download_cb
,所以我没有使用它
参考The File Object of Django。尝试
# retrieve file from ftp to memory,
# consider using cStringIO or tempfile modules for your actual usage
from StringIO import StringIO
from django.core.files.base import ContentFile
s = StringIO()
nvcftp.retrbinary("RETR " + fname, s.write)
s.seek(0)
# feed the fetched file to Django image field
new_image.image.save(fname, ContentFile(s.read()))
s.close()
# Or
from django.core.files.base import File
s = StringIO()
nvcftp.retrbinary("RETR " + fname, s.write)
s.size = s.tell()
new_image.image.save(fname, File(s))