You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ajax文件上传REST接口返回415错误,求技术解决方案

解决文件上传Ajax调用返回415错误的问题

嘿,我看到你在做Atlassian生态下的文件上传时碰到了415(Unsupported Media Type)错误,咱们一步步排查解决:

首先修复代码里的明显错误

你创建了FormData对象并赋值给了data变量,但在Ajax配置里却把data属性设成了file——这会导致实际没有传递正确的表单数据,这很可能是触发415错误的核心原因。

修正后的完整Ajax代码如下:

var data = new FormData(AJS.$('#upload-file')[0]); 
AJS.$.ajax({ 
    type: "POST", 
    url: getAttachmentUrl(), 
    data: data, // 这里把原来的`file`改为`data`
    dataType: "json", 
    cache: false, 
    processData: false, 
    contentType: false, 
    headers: { 
        "X-Atlassian-Token": "nocheck" // 确保令牌完整,通常是"nocheck"
    },
    success: function(response) {
        console.log("上传成功", response);
    },
    error: function(xhr, status, error) {
        console.error("上传失败,状态码:", xhr.status, "错误信息:", error);
    }
});

额外检查点(如果修正后仍有问题)

  • 验证接口兼容性:确认getAttachmentUrl()返回的REST接口确实支持multipart/form-data类型的请求,有些接口可能只接受JSON格式,这时候就需要调整上传方式。
  • 确保文件已选中:在发起请求前,可以加个判断,确保用户已经选择了要上传的文件:
    var fileInput = AJS.$('#file')[0];
    if (fileInput.files.length === 0) {
        alert("请先选择要上传的文件");
        return;
    }
    
  • XSRF令牌正确性:Atlassian产品的XSRF令牌如果是动态生成的,要确保你获取的是当前页面的有效令牌,而不是硬编码的"nocheck"(虽然部分场景下"nocheck"是允许的,但最好按官方规范来)。

内容的提问来源于stack exchange,提问作者Roberts Kalderauskis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:20:42