• django MongoDB上传文件


    django上传文件,查询到的资料都是用的django自己的models.Model类,去定义一个FileField类型的存储文件,并且在里面加一句upload_to,如下所示:
     
    但是如果用mongodb,虽然Document有FileField类型,但是没有upload_to这个参数,所以写了一个方法去将POST里面的文件存储到本地
     
    存储文件的方法如下:
    def uploaded_file(f,filename):
    address ='C:/Users/XXXX/Desktop/'+filename
    destination = open(address, 'wb+')
    for chunk in f.chunks():
    destination.write(chunk)
    destination.close()
    注方法说明:参数f为POST的FILES文件,filename为要存储的文件名,之所以没有用一个固定的地址,是因为上传的文件类型是不定的,可能还txt,也可能是jpg等
    html模板里的上传代码:
    
    
    <form id="formid" method="POST" action="" enctype="multipart/form-data">
    <div class="file-box">
    <input type='text' name='protextfield' id='protextfield' class='txt' />
    <input type='button' class='btn' value='浏览...' />
    <input type="file" name="proupload" class="file" id="fileField" size="28" onchange="document.getElementById('protextfield').value=this.value" />
    <input type="submit" name="submit" class="btn" value="上传" />
    </div>
    </form>
    模板注意点:form必须加enctype="multipart/form-data",否则不能传送文件。
     
    在view.py里调用该方法执行的上传操作
    def newproject(request):
    if request.FILES:
    filename =request.FILES['proupload'].name
    uploaded_file(request.FILES['proupload'],filename)
    post.proadress = filename
    return render_to_response('XXX.html', locals())
    说明:上面的方法中的filename是获得了上传的文件名,包括文件后缀,例如test.txt。request.FILES['proupload']是获得了名字为proupload的文件。这么做的结果就是将上传的文件存储到了一个本地固定的位置,并存储了文件名到数据库里。
     
     
    其他说明:目前没有做下载,但是下一步思路是想将所有文件固定存储到一个文件夹里,或者按后缀去分开存储,然后下载的时候按照文件名在存储文件夹里遍历,取出要找的文件进行下载。
  • 相关阅读:
    Android CTS 测试
    Cygwin 不兼容Win7 64
    真滴有太多不懂的的东西,有点扛不住了。
    ffmpeg yasm not found, use disableyasm for a crippled build
    手机搜索不到 Connectify
    Android ICS 横竖屏切换时不销毁Activity
    MinGw\bin\ar.exe: libavcodec/: Permission denied
    Cannot complete the install because one or more required items could not be found.
    Eclipse 启动时报错 JVM terminated. Exit code=1
    【Java 从入坑到放弃】No 5. 控制流程
  • 原文地址:https://www.cnblogs.com/meitian/p/4763167.html
Copyright © 2020-2023  润新知