作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 Django 中上传文件并根据格式将它们保存在不同的位置(并在信号中执行其他操作 - post_save
)? (jpeg 和文档)
def upload(request):
user = request.user
upload_form = UploadForm(request.POST or None, request.FILES or None)
if request.method == "POST":
if upload_form.is_valid():
my_model = upload_form.save(commit=False)
my_model.user = user
my_model.save()
模型:
class FileStore(models.Model):
user = models.ForeignKey(User)
standard = models.FileField(upload_to="standard")
after_operation = models.FileField(upload_to="after_ocr",blank=True, null=True)
信号:
@receiver(post_save, sender=FileStore)
def my_handler(sender,instance, **kwargs):
if kwargs['created']:
text= image_to_string(Image.open(instance.standard))
...
instance.after_operation = File(text_file)
instance.save()
如果文件是 .doc
或 .pdf
,我想只保存在 standard
字段中,如果文件是 .jpeg
或 .png
我需要运行我的信号函数。
最佳答案
例如,您可以像这样访问 request.FILES
字典来检索上传的文件:
uploaded_file = request.FILES['file']
uploaded_file
现在是 UploadedFile
类型,这意味着您可以像这样获取有关文件的信息:
# name of the file, ie: my_file.txt
filename = uploaded_file.name
# file extension (get the las 4 chars)
file_ext = filename[-4:]
# handle file extension
if file_ext == '.jpg':
# do something for jpegs
if file_ext == '.doc':
# do something for docs
所以现在,为了保存它,你可以试试这个,我还没有证明:
# f is the UploadedFile
model_file = File(f)
model_file.save('path/to/wherever.ext', f.readlines(), true)
希望对您有所帮助!这可能无法开箱即用,但我希望它能为问题带来一些启示。尝试查看文档:django files和 django uploaded files .这个主题有很好的记录。
祝你好运!
关于django - 如何在Django中上传文件并根据格式保存在不同的位置? (jpeg 和文档),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16837058/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!