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
相关产品推荐
相关产品推荐

