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

无需使用submit按钮提交input type="file"文件及其他表单参数的问题

问题原因

直接通过$("#arquivo").val()只能获取到文件的本地虚拟路径,无法获取真实二进制文件内容,同时jQuery AJAX默认的参数序列化规则不支持传输文件类型数据,所以后端接收到的文件参数为空。

解决方法

使用FormData对象封装表单数据,同时调整AJAX配置参数,修改后的JS代码如下:

function update_estado()
{   
  // 直接基于现有表单创建FormData对象,会自动包含所有表单字段(包括文件)
  var dadosajax = new FormData($('#forarq')[0]);
  // 如需额外传参可以手动追加:dadosajax.append('自定义字段','对应值')
  
  $.ajax({
      url: 'pedencom.php',
      type: 'POST',
      cache: false,
      data: dadosajax,
      // 禁止jQuery自动处理FormData数据,必须保留
      processData: false,
      // 禁止jQuery手动设置请求头Content-Type,让浏览器自动生成带分隔符的multipart/form-data类型
      contentType: false,
      error: function(){
        $(".error_message").removeClass('hide');
          swal("Erro!", "Tente novamente. Caso persista o erro, contatar Administrador!", "error");
      },
      success: function(result2)
       {
         $('.limp9')[0].reset();    
       }
    });
}

后端取值说明

PHP后端获取参数的方式和普通表单提交一致:

  • 邮箱参数:$_POST['Fornecedor']
  • 上传文件信息:$_FILES['arquivo'],后续可以用move_uploaded_file()等方法完成文件持久化保存。

另外你当前按钮设置的是type="button",本身就不会触发表单默认submit行为,不需要额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:54:04