如何在Django中将文件上传到任意目录?

我正在使用Django开发文件管理器。我正在使用SFTP文件服务器和django-storage package来管理文件。

好吧,到目前为止,我为用户开发了一些Apis来创建和修改他们自己的根目录(对用户来说是抽象的)下的目录。现在,我希望用户能够将文件上传到子目录中或在这些子目录之间移动文件,但是我不知道怎么办!!

这是我用于文件管理的模型:

$("#imageUpload").change(function() {
   $("#Change").show();
});
function Cancel() {
   var CurrentAvatar = "<?php echo $CurrentAvatar;?>";
   $("#Change").hide();
   document.getElementById("imgDivEdit").style.backgroundImage = 
   "url(data:image/jpeg;base64,CurrentAvatar)";
 }
$("#ChangeImg").click(function(e) {
   $("#imageUpload").click();
 });

function fasterPreview(uploader) {
    if (uploader.files && uploader.files[0]) {
       var reader = new FileReader();
       reader.readAsDataURL(uploader.files[0]);
    reader.onloadend = function(){
       document.getElementById("imgDivEdit").style.backgroundImage = "url(" + reader.result + ")";  
 }
}
 }
 $("#imageUpload").change(function() {
   fasterPreview(this);
});

如您所见,当前文件将被上传到def user_directory_path(instance,filename): return 'user_{0}/{1}'.format(format(instance.owner.id,'010d'),filename) class UploadedFile(models.Model): id = models.UUIDField(primary_key=True,default=uuid.uuid4,editable=False) name = models.CharField(max_length=150) owner = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE) file = models.FileField(upload_to=user_directory_path) 目录。

谢谢。

BDanube 回答:如何在Django中将文件上传到任意目录?

最后,我在名为CharField的模型中添加了一个额外的upload_to,并在user_directory_path函数中使用了它来指示文件的子目录。

def user_directory_path(instance,filename):
    if instance.upload_to != '' and instance.upload_to[-1] != '/':
        upload_to = instance.upload_to + '/'
    else:
        upload_to = instance.upload_to
    return 'user_{0}/{1}{2}'.format(format(instance.owner.id,'010d'),upload_to,filename)

class UploadedFile(models.Model):
    id = models.UUIDField(primary_key=True,default=uuid.uuid4,editable=False)
    name = models.CharField(max_length=150)
    owner = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
    file = models.FileField(upload_to=user_directory_path)
    upload_to = models.CharField(max_length=255,default='')
本文链接:https://www.f2er.com/3102622.html

大家都在问