我不知道我是否理解你想包含在管理区域中。您是否正在寻找一种使用HTTP以外的传输协议自动执行文件上传过程的方法?
如果是这样,您可以使用基本CharField(或可能是URLField)创建模型,然后在保存对象时执行rsync或scp复制。例如:
from django.db import models
class File(models.Model):
path = models.CharField()
def save(self):
import os
# WARNING! The path given by the user should be sanitized; this is
# example code only. This is a security vulnerability.
# Attempt to rsync the target file from a remote machine
exit_code = os.system("rsync %s /incoming/files/path/" % self.path)
# Make sure it worked before saving
if exit_code == 0:
super(File, self).save() # Call the "real" save() method
else:
# Raise exception
这是一个非常粗略的例子,但它应该可以帮助您计算出某些东西。您需要确保您的例程安全(格式不正确的路径可能允许用户运行任何他们想要的内容)。此外,这可能会阻止Django保存例程,同时复制文件,因此您应该查看在单独的进程中运行您的首选命令。
祝你好运!
好奇,想看看是什么回应是,我需要很快处理这个相同的问题 - 大量文件从100-200mb,通过管理员上传到S3。 – 2009-08-11 23:05:42
我用FilePathField做了一个表单,它工作正常,但需要重新加载Web服务器才能看到新文件:/ - 仍在寻找替代方法! – user130924 2009-08-14 11:10:50