【问题标题】:How can I programaticaly create a directory on file upload and save the uploaded file to that direcotry using django?如何以编程方式在文件上传时创建目录并使用 django 将上传的文件保存到该目录?
【发布时间】:2020-06-03 14:14:44
【问题描述】:

我正在尝试在文件上传时以编程方式创建一个目录。我可以使用日期和时间戳创建目录,同时文件也被上传。但是在上传过程中我无法将文件保存在目录中。

我的意见.py

def uploadfile(request):
    dirname = datetime.now().strftime('%Y.%m.%d.%H.%M.%S') 

    context = {}
    if request.method == 'POST':
        uploaded_file = request.FILES['document']
        fs = FileSystemStorage()
        os.mkdir(os.path.join('uploads', dirname)) #'uploads' is my media root folder
        name = fs.save(uploaded_file.name, uploaded_file) ##** this file need to be saved inside the /uploads/2010.08.09.12.08.45/files_name **##
        context['url'] = fs.url(name)
    return render(request, 'upload.html', context)

上面的代码使用 POST 和模板中的表单上传文件,并且它还创建了一个具有当前时间戳的文件夹。但问题是我无法将文件保存在文件夹中。

【问题讨论】:

    标签: python django


    【解决方案1】:
    def uploadfile(request):
        dirname = datetime.now().strftime('%Y.%m.%d.%H.%M.%S') 
    
        context = {}
        if request.method == 'POST':
            folder='uploads/{name}/file_name'.format(dirname) 
            uploaded_file = request.FILES['document']
            fs = FileSystemStorage(location=folder)
            os.mkdir(os.path.join('uploads', dirname)) 
            name = fs.save(uploaded_file.name, uploaded_file)
            context['url'] = fs.url(name)
        return render(request, 'upload.html', context)
    

    【讨论】:

    • 如果行 folder='uploads/{name}/file_name'.format(dirname) 更改为 folder='uploads/'+dirname.format(dirname) 它可以完美运行.. 谢谢
    【解决方案2】:

    以下内容对我来说很好。

    def uploadfile(request):
        dirname = datetime.now().strftime('%Y.%m.%d.%H.%M.%S') #2010.08.09.12.08.45 
        context = {}
        if request.method == 'POST':
            uploaded_file = request.FILES['document']
            fs = FileSystemStorage(location=dirname)
            name = fs.save(uploaded_file.name, uploaded_file)
            context['url'] = fs.url(name)
        return render(request, 'upload.html', context)
    

    【讨论】:

      猜你喜欢
      • 2016-08-04
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 2020-12-21
      • 1970-01-01
      • 2016-01-09
      相关资源
      最近更新 更多