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

XHR POST无法提交.obj文件及测试数据问题求助

问题:.obj文件通过XHR POST发送时无数据提交

我用原生XHR写了一段文件上传代码,其他格式文件都能正常发送,但处理.obj扩展名的文件时,POST请求里完全没有提交任何数据——哪怕只加了测试字段test也发不出去。控制台打印file对象能确认内容是正确的,代码如下:

var form = new FormData();
form.append("file", file);
form.append("test", "test");

var xhr = new XMLHttpRequest();
xhr.open("POST", "desk.php", true);
xhr.onload = function ()
{
    if (xhr.status == 200)
    {
        var response = JSON.parse(xhr.responseText);
        console.log(response);
    }

};
xhr.send(form);

排查与解决方法

  • 指定文件MIME类型:.obj文件的默认MIME类型可能未被服务器识别,导致请求被拦截。在添加文件到FormData时手动指定类型或文件名:

    // 方法1:带上文件名让浏览器自动识别
    form.append("file", file, file.name);
    // 方法2:明确指定MIME类型
    form.append("file", file, { type: 'model/obj' });
    
  • 检查服务器上传限制:如果.obj文件体积较大,服务器的上传大小限制(如PHP的upload_max_filesize、post_max_size)会截断请求。修改php.ini对应参数后重启服务,前端也可提前校验文件大小。

  • 排除浏览器拦截:部分安全扩展可能拦截特定类型文件上传,尝试在无痕模式下测试,或禁用第三方扩展后重试。

  • 验证FormData有效性:发送前确认FormData中的字段是否存在:

    console.log(form.get('file')); // 检查file对象是否已添加
    console.log(form.get('test')); // 检查测试字段是否存在
    
  • 排查服务器接收逻辑:简化desk.php代码,先打印所有接收数据,确认请求是否到达服务器,同时检查是否有针对.obj扩展名的过滤逻辑:

    var_dump($_POST); // 打印POST字段
    var_dump($_FILES); // 打印上传文件
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:25:19