0

文件上传完成后如何处理对文件的任何操作?

上传后我需要立即将上传的文件复制到远程服务器上,从远程服务器获取响应并将其放入数据库。

我曾尝试在 ModelAdmin 的 save_model 中这样做:

class MyAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.answer = remote_upload(obj.file.path)
        obj.save()

remote_upload 是自己写的函数,如果我直接运行,它会成功上传文件。但它在 save_model 中失败。obj.file.path 返回一个 MEDIA_PATH + 文件名,并且在 save_model 执行的那一刻看起来文件丢失了。

我应该如何以正确的方式复制文件?

附言。看起来有 FileUploadHandler.upload_complete(),但我不确定是否(以及如何)可以使用它。

4

2 回答 2

1

因此,要将文件保存在 save_model 中,我只需在其中调用 form.save() 函数。像这样:

class MyAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        form.save()
        obj.answer = remote_upload(obj.file.path)
        obj.save()

这么简单=)

于 2013-08-06T21:02:23.467 回答
0

您可以通过将 upload_to 设置为函数来指定要复制到的位置。这可以在模型本身中完成。

如何使用upload_to

例子:

def upload_to_special_path(instance, filename):
    return #The path that you want to have.

class MyModel(models.Model):
    file = models.FileField(upload_to=upload_to_special_path)
于 2013-08-06T17:11:09.403 回答