【问题标题】:jquery -> django file uploadingjquery -> django 文件上传
【发布时间】:2016-03-11 05:30:20
【问题描述】:

是的,这是我如何将文件从 jquery 客户端上传到 django 服务器的另一个问题,除了在网上找到的 15 种解决方案中没有一个对我有用。 (请原谅我的菜鸟——我一般不经常使用 Web 框架)。

因此,设置如下所示:
客户端:

    var formData = new FormData();
    formData.append('file', response.output['file'], response.output['name'])
    $.ajax({
      url: "djangourl",
      data: formData,
      processData: false,
      contentType: false, // also tried setting 'multipart/form-data', no profit
      mimeType: 'multipart/form-data',
      type: 'POST',
      dataType: 'json',
      cache: false,
      success: function(data){
        alert(JSON.stringify(data));
      },
      error: function(data){
        alert(JSON.stringify(data));
      }
    });

服务器端:

@require_http_methods(["POST"])
@csrf_exempt
def upload_document(request, project_id):
    try:
        if request.FILES:
            return HttpResponse(json.dumps("Yay!", default=json_util.default), status=200, content_type="application/json")
        else:
            return HttpResponse(json.dumps("Nah.", default=json_util.default), status=200, content_type="application/json")
    except Exception as e:
        return HttpResponseServerError(str(e))

每次我尝试这个时,我都会得到空的request.FILES,有什么想法吗?

更新:事实证明,request.POST 包含绑定到“[object FileList]”(字面意思是这个字符串)的键“文件”,如果这有助于澄清情况的话。

【问题讨论】:

标签: jquery django forms


【解决方案1】:

事实证明,我从前端(基于 Aurelia 的应用程序)收到的 response.output['file'] 是一个 FileList 对象而不是单个文件(尽管没有给 <input> 标签指定 multiple 说明符)。结束话题,谢谢。

【讨论】:

    猜你喜欢
    • 2013-03-26
    • 2014-01-16
    • 2011-11-01
    • 1970-01-01
    • 2012-04-25
    • 2013-10-09
    • 1970-01-01
    • 2012-05-19
    • 2013-03-27
    相关资源
    最近更新 更多