django在表单上传时同时向本地数据库保存文件的描述应该怎么办?

key值暂时是自动的,代码如下,但是不能同时添加一个文件的描述,该怎么办?就在f.title那里添加文件描述

def upload_file(request):
    file = qiniu.rs.PutPolicy('dlpucsdn')
    file.returnUrl = "http://127.0.0.1:8000/src/receive"
    token = file.token()
    return render_to_response('uploader/upload.html',{'token':token,
                                               'request':request},
                          context_instance = RequestContext(request))

def receive_url(request):
    if request.method == 'GET':
        ret = request.GET['upload_ret']
        if ret:
            fileInfo = json.loads(base64.decodestring(ret))
            key = fileInfo['key']
            domain = 'dlpucsdn.qiniudn.com'
            base_url = qiniu.rs.make_base_url(domain, key)
            policy = qiniu.rs.GetPolicy()
            key = base64.encodestring(fileInfo['key'])
            print(key)
            private_url = policy.make_request(base_url)  # 获得下载地址
            f = files()
            f.auth = request.user
            f.title = 'world hello'
            f.url = private_url
            f.save()
            return HttpResponseRedirect(reverse('src_index',))
        return render_to_response('uploader/error.html')
    return render_to_response('uploader/error.html')

HTML模板如下

<form method="post"action="http://upload.qiniu.com/"enctype="multipart/form-data">
   {% csrf_token %}
     <p><input name="title" type="text" class="form-control" placeholder="文件描述(必填)"></p>
    <p><input name="token" type="hidden" value="{{ token }}"></p>
    <p><input name="file" type="file" class="form-control"></p>
    <input type="submit" value="上传" class="btn-info form-control" style="width: 100px;float: right">

阅读 5k
1 个回答

根据我的理解,你是希望在上传的时候添加一个“文件描述”的自定义变量,你可以参考http://developer.qiniu.com/docs/v6/api/reference/up/upload.html当中的自定义变量的设置,边当中的文件描述最好修改成

<p><input name="x:title" type="text" class="form-control" value="文件描述(必填)"></p>

另外,你尝试修改一下extra

extra = io.PutExtra()
extra.mime_type = "text/plain"
extra.params = {'x:title': '文件描述(必填)'}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进