美文网首页
django上传文件夹获取路径名

django上传文件夹获取路径名

作者: warmi_ | 来源:发表于2018-11-28 11:35 被阅读0次

不可能,它是InMemoryUploadedFile文件,就是个存内存的假文件。所以要从前端的js的formdata里添加一句相对路径参数:

fd.append("paths", files[i]['webkitRelativePath'])

后端获取:

request.POST.getlist('paths')

然后根据相对路径创文件夹,上传文件就好了

大致代码:
前端

<input type='file' webkitdirectory >  <button >点击测试</button>
<script>
    var files = [];
    $(document).ready(function(){
        $("input").change(function(){
            files = this.files;
        });
        $("button").click(function(){
            var fd = new FormData();
            for (var i = 0; i < files.length; i++) {

               fd.append("files", files[i]);
               fd.append("paths", files[i]['webkitRelativePath']);

            }
               console.log(files[2]['webkitRelativePath']);
            $.ajax({
                url: "api/project/upload",
                method: "POST",
                data: fd,
                contentType: false,
                processData: false,
                cache: false,
                success: function(data){
                    console.log(data);
                }
            });
        });
</script>

后端view.py

@csrf_exempt
def project_upload(request):

    if request.method == 'POST':

        dir=request.FILES
        dirlist=dir.getlist('files')
        pathlist=request.POST.getlist('paths')
        print(dir)
        if not dirlist:
            return HttpResponse( 'files not found')
        else:

            for file in dirlist:
                position = os.path.join(os.path.abspath(os.path.join(os.getcwd(),'projects')),'/'.join(pathlist[dirlist.index(file)].split('/')[:-1]))
                if not os.path.exists(position):
                    os.makedirs(position )
                storage = open(position+'/'+file.name, 'wb+')    
                for chunk in file.chunks():          
                    storage.write(chunk)
                storage.close()                 
            return HttpResponse( '1') 

另,上传文件夹不用form的enctype="multipart/form-data">也行

相关文章

  • django上传文件夹获取路径名

    不可能,它是InMemoryUploadedFile文件,就是个存内存的假文件。所以要从前端的js的formdat...

  • 操作手册集

    1、切换到root用户:su root 2、进入指定的文件夹路径:cd + 路径名 3、显示当前文件夹下的子文件夹...

  • Django 文件上传

    Django 文件上传 利用Django实现文件上传并且保存到指定路径下,其实并不困难,完全不需要用到django...

  • mac 终端语句

    pwd 当前工作目录 cd(不加参数) 进root cd(路径名) 进入文件夹 cd .. ...

  • python 文件路径处理

    获取文件名os.path.basename 输出 获取文件路径 输出 获取文件后缀 输出 将文件路径和路径名拼接 ...

  • node 单文件或多文件上传

    解析form表单插件 formidable 例子: 前台 html: 服务端 node(返回上传文件路径名)...

  • django-hello world

    实验步骤 step1: 新建django文件夹 到django的目录下新建django的项目HelloWorld ...

  • 2018-11-21

    mac 终端语句 pwd 当前工作目录 cd(不加参数) 进root cd(路径名) 进入文件夹...

  • 调用API获取路径名称

  • ssh-server 和 ssh-client 如何上传&下载

    一、下载文件 二、上传文件 三、下载文件夹 四、上传文件夹

网友评论

      本文标题:django上传文件夹获取路径名

      本文链接:https://www.haomeiwen.com/subject/lydaqqtx.html