使用 Ajax 和 FormData 实现文件上传及文本数据提交

使用 ajax 和 formdata 实现文件上传及文本数据提交

本文档旨在解决在使用 Ajax 和 FormData 进行文件上传时,同时提交文本输入数据遇到的常见问题,例如 PHP 端无法获取 `$_POST` 和 `$_FILES` 数据。我们将详细介绍如何正确配置 HTML 表单、JavaScript 代码以及 PHP 后端,以实现完整的文件和文本数据上传功能。

HTML 表单配置

首先,确保你的 HTML 表单正确设置了 enctype 属性,并且 name 属性在表单中是唯一的。enctype=”multipart/form-data” 是文件上传的关键。

        

注意事项:

确保每个 input 元素都有唯一的 name 属性。label 元素应该通过 for 属性或直接包裹 input 元素来关联。

JavaScript (jQuery) 代码

使用 JavaScript (jQuery) 创建 FormData 对象,并将表单数据添加到其中。然后,使用 Ajax 发送 FormData 对象。

const form = document.forms.usrupload;form.bttn.onclick = () => {  var form_data = new FormData(form);  $.ajax({    type: 'POST',    dataType: 'text',    cache: false,    contentType: false,    processData: false,    url: 'save_data.php',    data: form_data,    success: function(data) {      alert(data)      window.location = 'account.php';    }  });}

关键点:

contentType: false 和 processData: false 是必须的,因为 FormData 对象会自动处理 Content-Type。直接将 form_data 对象作为 data 属性的值传递给 Ajax 请求。使用 new FormData(form) 可以直接将整个表单的数据添加到 FormData 对象中。

PHP 后端代码

在 PHP 后端,可以使用 $_POST 和 $_FILES 超全局变量来访问上传的数据。


注意事项:

确保在访问 $_FILES 之前,检查文件是否成功上传。进行适当的文件类型和大小验证,以确保安全性。使用 move_uploaded_file() 函数将上传的文件移动到服务器上的安全位置。

完整示例

HTML:

        const form = document.forms.usrupload;form.bttn.onclick = () => {  var form_data = new FormData(form);  $.ajax({    type: 'POST',    dataType: 'text',    cache: false,    contentType: false,    processData: false,    url: 'save_data.php',    data: form_data,    success: function(data) {      alert(data)      window.location = 'account.php';    }  });}

PHP (save_data.php):

<?phpif ($_SERVER["REQUEST_METHOD"] == "POST") {    $name = $_POST['name'];    $title = $_POST['title'];    if (isset($_FILES['file']) && $_FILES['file']['error'] == 0) {        $file = $_FILES['file'];        $filename = $file['name'];        $filetmpname = $file['tmp_name'];        $filesize = $file['size'];        $filetype = $file['type'];        // 移动上传的文件到指定目录        $upload_dir = "uploads/"; // 确保该目录存在且可写        $filepath = $upload_dir . $filename;        if (move_uploaded_file($filetmpname, $filepath)) {            echo "File uploaded successfully!";        } else {            echo "Error uploading file.";        }    } else {        echo "No file uploaded or error during upload.";    }    echo "Name: " . $name . "
"; echo "Title: " . $title . "
";} else { echo "Invalid request method.";}?>

总结:

通过正确配置 HTML 表单的 enctype 属性,使用 JavaScript 创建 FormData 对象,并设置 Ajax 请求的 contentType 和 processData 属性为 false,可以成功地将文件和文本数据一起上传到服务器。在 PHP 后端,可以使用 $_POST 和 $_FILES 超全局变量来访问上传的数据。记住进行适当的验证和错误处理,以确保应用程序的安全性。

以上就是使用 Ajax 和 FormData 实现文件上传及文本数据提交的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1324475.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
PHP与Ajax实现表格长文本截断显示及模态编辑教程
上一篇 2025年12月12日 11:08:41
自定义 Blade 指令实现静态资源路径配置
下一篇 2025年12月12日 11:08:49

相关推荐

  • Microsoft Works什么?如何在Win10系统上运行?

    Microsoft Works什么?如何在Win10系统上运行?Microsoft Works什么?如何在Win10系统上运行?Microsoft Works什么?如何在Win10系统上运行?Microsoft Works什么?如何在Win10系统上运行?

    win10系统如何启用microsoft works?许多人使用win10系统时会选择安装microsoft office,但也有部分用户选择安装microsoft works。尽管microsoft works已经停止更新,但我们依然可以通过一些配置来让它在win10系统中正常工作。接下来就让我们…

    2026年10月2日 • 用户投稿
    000
  • Win7的回收站清空了怎么恢复?

    Win7的回收站清空了怎么恢复?Win7的回收站清空了怎么恢复?Win7的回收站清空了怎么恢复?Win7的回收站清空了怎么恢复?

    许多人在日常使用电脑时,都会养成定期清理回收站的习惯。然而,有时我们不小心删除了一些文件,随后又清空了回收站,这时该怎么办呢?如果win7系统的回收站被清空了,该如何恢复呢?接下来,小编将为大家详细介绍具体的恢复步骤。 具体操作步骤如下: 1、首先按下Win+R组合键,打开运行窗口,在输入框内输入“…

    2026年10月2日 • 用户投稿
    000
  • 谷歌浏览器下载栏不见了怎么办_谷歌浏览器底部下载栏恢复显示设置

    谷歌浏览器下载栏不见了怎么办_谷歌浏览器底部下载栏恢复显示设置谷歌浏览器下载栏不见了怎么办_谷歌浏览器底部下载栏恢复显示设置谷歌浏览器下载栏不见了怎么办_谷歌浏览器底部下载栏恢复显示设置谷歌浏览器下载栏不见了怎么办_谷歌浏览器底部下载栏恢复显示设置

    首先禁用Chrome实验性功能中的下载气泡,再通过更新浏览器解决界面异常。具体操作为:1. 在地址栏输入chrome://flags/#download-bubble,将“启用下载气泡”设为Disabled;2. 重启浏览器;3. 检查并更新Chrome至最新版本以确保功能正常。 如果您在使用谷歌浏…

    2026年10月2日 • 用户投稿
    000
  • 轻松教会你win10如何进入bios界面

    轻松教会你win10如何进入bios界面轻松教会你win10如何进入bios界面轻松教会你win10如何进入bios界面轻松教会你win10如何进入bios界面

    前几天,小编闲暇之余逛了逛网站底部,发现有粉丝朋友给小编留言提问,其中有一个问题引起了我的注意,那就是win10系统如何进入bios界面。其实这个问题的答案非常简单,接下来,小编就为大家详细讲解一下具体的操作步骤,一起来看看吧。 首先,我们打开电脑,然后在屏幕左下角找到“开始”菜单并点击打开,接着找…

    2026年10月2日 • 用户投稿
    100
  • 谷歌浏览器怎么静音单个网站_谷歌浏览器单个标签页静音技巧

    谷歌浏览器怎么静音单个网站_谷歌浏览器单个标签页静音技巧谷歌浏览器怎么静音单个网站_谷歌浏览器单个标签页静音技巧谷歌浏览器怎么静音单个网站_谷歌浏览器单个标签页静音技巧谷歌浏览器怎么静音单个网站_谷歌浏览器单个标签页静音技巧

    可通过标签页右键选择“静音站点”快速关闭单个网页声音;2. 点击地址栏锁形图标,将声音权限改为“阻止”可实现长期静音;3. 在设置-隐私和安全-网站设置中管理声音权限,批量控制多个网站音频播放。 如果您在使用谷歌浏览器时,发现某个正在播放音频的网页标签页发出声音,而您只想关闭该网站的声音而不影响其他…

    2026年10月2日 • 用户投稿
    100
  • 微软开始大规模推送Win10 1909正式版更新

    微软开始大规模推送Win10 1909正式版更新微软开始大规模推送Win10 1909正式版更新微软开始大规模推送Win10 1909正式版更新微软开始大规模推送Win10 1909正式版更新

    微软于2019年发布的windows 10十一月版(1909版)已在11月12日正式推出,此版本包含一些新功能以及常规优化。微软现已通过其update assistant工具将此次更新开放给用户,该工具支持用户轻松下载与安装windows 10的十一月版更新。update assistant不仅能够…

    2026年10月2日 • 用户投稿
    100
  • 掌握Java方法返回类型:字符与字符串在条件判断中的应用

    本教程旨在解决Java方法中根据条件返回特定标识符(如’A’,’B’,’C’)时常见的类型错误。我们将分析将字符字面量赋给整型变量并尝试返回的潜在问题,并提供两种标准且健壮的解决方案:通过将方法返回类型和变量声明为char类型,…

    2026年10月2日
    000
  • 5 月上线,微软预告网页版 OneDrive 更新:AI 梳理整合各种文档

    5 月上线,微软预告网页版 OneDrive 更新:AI 梳理整合各种文档5 月上线,微软预告网页版 OneDrive 更新:AI 梳理整合各种文档5 月上线,微软预告网页版 OneDrive 更新:AI 梳理整合各种文档5 月上线,微软预告网页版 OneDrive 更新:AI 梳理整合各种文档

    根据微软近期在 microsoft 365 路线图中的更新内容,该公司计划于今年5月为microsoft 365用户提供网页版onedrive云盘服务的升级。此次更新将引入ai功能,用于自动分析、整理和归纳各类文档内容。这项功能将涵盖多种文件类型,包括但不限于doc、docx、fluid、loop、…

    2026年10月2日 • 用户投稿
    100
  • qq浏览器为什么不能安装crx插件_qq浏览器crx插件安装失败原因及对策

    qq浏览器为什么不能安装crx插件_qq浏览器crx插件安装失败原因及对策qq浏览器为什么不能安装crx插件_qq浏览器crx插件安装失败原因及对策qq浏览器为什么不能安装crx插件_qq浏览器crx插件安装失败原因及对策qq浏览器为什么不能安装crx插件_qq浏览器crx插件安装失败原因及对策

    1、QQ浏览器可能因内核限制无法直接安装CRX插件,需确认使用极速模式并开启开发者模式尝试拖入安装;2、若失败可将CRX后缀改为ZIP解压后通过“加载已解压的扩展”添加;3、检查是否因安全策略阻止安装,需关闭相关防护设置;4、仍无效时建议使用Chrome或Edge安装后通过账号同步扩展数据。 如果您…

    2026年10月2日 • 用户投稿
    000
  • win11怎么设置连接特定WiFi时自动切换为专用网络_win11WiFi自动切换专用网络设置方法

    首先通过设置应用将Wi-Fi网络配置文件改为专用,其次可用PowerShell命令Set-NetConnectionProfile指定SSID为Private,最后专业版用户可通过组策略预设无线网络为专用类型。 如果您希望在Windows 11中连接某个特定的Wi-Fi网络时,系统能自动将其识别为专…

    2026年10月2日
    000
  • win10电脑识别不了usb设备怎么办

    win10电脑识别不了usb设备怎么办win10电脑识别不了usb设备怎么办win10电脑识别不了usb设备怎么办win10电脑识别不了usb设备怎么办

    许多使用usb设备的用户会遇到插入时无法被识别的问题,这种情况多数是简单的识别故障,尝试多次插拔即可解决,但也可能存在其他原因。如果你的windows 10电脑无法识别usb设备,别担心,这里有一份解决办法供你参考。 Windows 10电脑无法识别USB设备怎么办 一、第三方软件冲突 或许是某些第…

    2026年10月2日 • 用户投稿
    000
  • [windows工具]批量OCR指定区域图片自动识别内容重命名软件1.3版本使用教程及注意事项

    [windows工具]批量OCR指定区域图片自动识别内容重命名软件1.3版本使用教程及注意事项[windows工具]批量OCR指定区域图片自动识别内容重命名软件1.3版本使用教程及注意事项[windows工具]批量OCR指定区域图片自动识别内容重命名软件1.3版本使用教程及注意事项[windows工具]批量OCR指定区域图片自动识别内容重命名软件1.3版本使用教程及注意事项

    OCR区域自动识别重命名工具 Paddle版1.3.1 使用指南 工具概述 ocr区域自动识别重命名工具(paddle版1.3.1)是一款基于paddleocr技术开发的批量图片文件重命名软件,能够智能识别图像中的文字区域,并将识别出的文字内容用作新的文件名。当前版本采用先进的pp-ocv5算法,具…

    2026年10月2日 • 用户投稿
    100
  • C盘空间满了怎么办?

    C盘空间满了怎么办?C盘空间满了怎么办?C盘空间满了怎么办?C盘空间满了怎么办?

    大家好!之前我们分享了如何通过转移微信和qq缓存来释放c盘空间,但有些小伙伴反映即使这样做了,c盘依然很快就满了。别担心,今天我们将介绍一个终极解决方案——将其他盘的空间转移给c盘,彻底解决你的空间问题! 首先,为什么要这样做呢?主要是因为硬盘中数据过多,重新分区做系统又太麻烦。 幸运的是,我们可以…

    2026年10月2日 • 用户投稿
    000
  • win10系统意外关闭崩溃如何解决

    win10系统意外关闭崩溃如何解决win10系统意外关闭崩溃如何解决win10系统意外关闭崩溃如何解决win10系统意外关闭崩溃如何解决

    当使用安装有win10操作系统的电脑时,如果遇到win10系统突然关闭崩溃的问题,该如何处理呢?这种情况可能是由于电脑内部文件损坏、系统组件缺失或第三方软件干扰引起的。具体的解决办法如下: win10系统意外关闭崩溃的解决方法 方法一: 完全卸载出现问题的第三方应用程序: kislive.exe(金…

    2026年10月2日 • 用户投稿
    000
  • 搜狗浏览器如何导出书签?备份书签的简单操作方法

    搜狗浏览器如何导出书签?备份书签的简单操作方法搜狗浏览器如何导出书签?备份书签的简单操作方法搜狗浏览器如何导出书签?备份书签的简单操作方法搜狗浏览器如何导出书签?备份书签的简单操作方法

    搜狗浏览器导出书签可通过三种方式:一、点击【收藏】图标,选择【更多功能】→【导入/导出收藏】→【导出收藏到html】,保存为HTML文件;二、通过菜单【三条横线】→【收藏】→【整理书签】→点击【导出】,选择路径保存;三、进入【收藏】→【备份/还原】→【备份到本地】,自动打包为HTML文件并保存。三种…

    2026年10月2日 • 用户投稿
    000
  • Win10 Chromium Edge新权限:阻止不安全内容

    Win10 Chromium Edge新权限:阻止不安全内容Win10 Chromium Edge新权限:阻止不安全内容Win10 Chromium Edge新权限:阻止不安全内容Win10 Chromium Edge新权限:阻止不安全内容

    和市面上多数其他浏览器一样,基于chromium内核的microsoft edge已经内置了一些规则,用于针对我们访问的每一个网站来设定权限。当然,为了提高操作便捷性,我们也能为所有页面统一配置规则,这样就能保证网站对文件、摄像头、麦克风等资源的访问能够得到妥善处理。 近期,微软在其最新的Canar…

    2026年10月2日 • 用户投稿
    000
  • Symfony 5与Mercure实时通信集成:配置、启动与常见访问问题排查

    本文详细介绍了如何在Symfony 5项目中集成Mercure实时通信服务。内容涵盖Mercure Hub的安装、环境变量配置、服务器启动命令,并着重解决了初次配置时常见的Mercure Hub访问问题,强调了URL端口一致性的重要性,确保开发者能顺利构建实时应用。 Mercure实时通信服务概述 …

    2026年10月2日
    100
  • Js处理滚动条和日期框

    Js处理滚动条和日期框Js处理滚动条和日期框Js处理滚动条和日期框Js处理滚动条和日期框

    文章总览图 此思维导图中的语法要结合文章内容来看,切记不可死读书,要活学活用。 Js处理1.常用的元素基本操作是什么? 四个基本操作。 1.send_keys() 2.click() 3.获取元素的文本内容。 4.获取元素的属性。 find_element_by_xpath()是我们的元素对象。 .…

    2026年10月2日 • 用户投稿
    100
  • 火狐浏览器怎么设置才能更省电_火狐浏览器笔记本电脑节能与性能优化设置

    火狐浏览器怎么设置才能更省电_火狐浏览器笔记本电脑节能与性能优化设置火狐浏览器怎么设置才能更省电_火狐浏览器笔记本电脑节能与性能优化设置火狐浏览器怎么设置才能更省电_火狐浏览器笔记本电脑节能与性能优化设置火狐浏览器怎么设置才能更省电_火狐浏览器笔记本电脑节能与性能优化设置

    火狐浏览器在笔记本电脑上耗电较快,主要与后台进程、硬件加速和网页渲染有关。通过启用节能电源计划、禁用硬件加速、限制后台标签页活动及优化内容渲染设置,可显著降低资源占用。具体操作包括:选择节能模式,关闭硬件加速,启用标签页冻结,安装广告拦截插件,并调整图像解码与视频解码设置,从而有效延长电池续航。 如…

    2026年10月2日 • 用户投稿
    100
  • Win10用户名无法更改怎么办?

    Win10用户名无法更改怎么办?Win10用户名无法更改怎么办?Win10用户名无法更改怎么办?Win10用户名无法更改怎么办?

    windows 10 电脑具备添加新用户以及修改用户名和密码的功能。当用户需要时,可以新增账户,并设定用户名与密码;同样地,若想调整用户名也是可行的。为确保用户名的选择得当,在浏览本地已有的账户时会更加直观,便于判断哪些账户可被移除。如果您遇到无法修改用户名的情况,请参考以下解决方案。 方案一: 尝…

    2026年10月2日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信