前端通过表单将pdf等文件传入后端

 更新时间:2024年09月29日 09:09:43   作者:bayeeaa  
在一些情境下,用户通过浏览器上传word、excel、pdf等各种类型的文件到系统,上传后可以随时下载,下面这篇文章主要介绍了前端通过表单将pdf等文件传入后端的相关资料,需要的朋友可以参考下

我们知道在js中我们可以通过:

<input type="file" name="file" id="fileInput" accept="image/*">

来输入文件。其中type指后端url,accept来限制传入类型。

前端通过表单形式将其传入后端

那么前端是怎么将这一整个文件打包传入后端的呢?

原来前端通过文件上传表单的方式将文件传输到后端。这通常涉及使用 HTML 的 <form> 元素和 <input type="file"> 输入框,以及设置适当的表单属性来支持文件上传。

Payload截图

可以看到我在使用ant design vue框架时其文件传输的内容包含状态,上传时间,文件名字等。

文件上传的流程:

  • 用户在文件输入框中选择一个文件。
  • 用户点击提交按钮,浏览器将会把表单数据(包括选定的文件)打包成 multipart/form-data 格式的请求体。
  • 请求被发送到指定的后端URL(在这个例子中是 /upload)。
  • 后端接收到请求后,可以通过相应的框架或库来解析 multipart/form-data,获取到文件数据,并进行进一步处理,例如保存文件到服务器或者进行文件内容分析等操作。

文件上传表单示例:

<form id="uploadForm" action="/upload" method="POST" enctype="multipart/form-data">
    <input type="file" name="file" id="fileInput">
    <button type="submit">上传文件</button>
</form>

解释:

  • <form> 元素定义了一个表单,其中:
    • action="/upload" 指定了表单提交的目标后端URL。
    • method="POST" 指定了使用POST方法提交表单。
    • enctype="multipart/form-data" 表示表单中包含文件上传,这是必需的,因为文件上传需要使用 multipart/form-data 类型来传输文件数据。
  • <input type="file" name="file" id="fileInput"> 是文件上传的输入框,其中:
    • type="file" 表示这是一个文件输入框,允许用户选择文件。
    • name="file" 指定了后端接收文件时的字段名称,这个名称在后端处理文件时很重要。
    • id="fileInput" 可以用来通过 JavaScript 获取文件输入框的引用,以便在用户选择文件后执行一些操作(例如显示文件名或大小)。
  • <button type="submit">上传文件</button> 是一个提交按钮,点击它会触发表单提交操作。

后端处理文件上传的例子:

  • Node.js(使用 Express 框架):

    const express = require('express');
    const multer = require('multer');
    const upload = multer({ dest: 'uploads/' });
    
    const app = express();
    
    app.post('/upload', upload.single('file'), (req, res) => {
        const file = req.file;
        // 处理文件,例如保存到服务器或者返回其他响应
        res.send('文件上传成功');
    });
    
    app.listen(3000, () => {
        console.log('服务器运行在 http://localhost:3000');
    });

    在这个例子中,使用了 multer 中间件来处理单个文件上传,upload.single('file') 表示期望接收一个名为 file 的文件字段。

  • PHP:

    <?php
    $target_dir = "uploads/";
    $target_file = $target_dir . basename($_FILES["file"]["name"]);
    $uploadOk = 1;
    
    if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
        echo "文件上传成功";
    } else {
        echo "文件上传失败";
    }
    ?>

    PHP 示例使用了 $_FILES 超全局数组来接收上传的文件,并使用 move_uploaded_file() 函数将文件从临时位置移动到指定的目标位置。

用JS将文件传入后端

上面以及展示了html文件上传表单的示例,下面再展示通过JavaScript监听文件选择事件来传递。

html

<div>
    <input type="file" id="File">
    <button>点击上传文件</button>
</div>

JS绑定事件

document.querySelector('button').addEventListener('click', e => {
	let fileList = document.querySelector('#File').files
})
let fd = new FormData()
fd.append('aaa',fileList[0])

如果接口文档要求传递请求体(包括Content-Disposition, Content-Type等)我们使用window提供的FormData构造函数来实例化一个表单类型。

axios传递

axios({
	url: '',
	method: 'POST',
	data: fd
}).then(res => {
	console.log(res);
})

通过ajax就可以将文件传入后端。

总结

到此这篇关于前端通过表单将pdf等文件传入后端的文章就介绍到这了,更多相关前端将pdf等文件传入后端内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 微信用户访问小程序的登录过程详解

    微信用户访问小程序的登录过程详解

    这篇文章主要介绍了微信用户访问小程序的登录过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • JS中字符串trim()使用示例

    JS中字符串trim()使用示例

    本文主要给大家介绍的是javascript中的扩展方法字符串trim()的使用指南,十分的简单实用,有需要的小伙伴可以参考下。
    2015-05-05
  • js实现键盘Enter键提交表单的方法

    js实现键盘Enter键提交表单的方法

    这篇文章主要介绍了js实现键盘Enter键提交表单的方法,涉及javascript键盘事件的相关操作技巧,需要的朋友可以参考下
    2015-05-05
  • 详细聊聊浏览器是如何看闭包的

    详细聊聊浏览器是如何看闭包的

    闭包实质上是函数作用域的副产物,下面这篇文章主要给大家介绍了关于浏览器是如何看闭包的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • 利用JS判断鼠标移入元素的方向

    利用JS判断鼠标移入元素的方向

    本文对JS判断鼠标移入元素的方向的实现方法进行介绍,并分享了完整的示例代码,有需要的朋友可以看下
    2016-12-12
  • js arguments,jcallee caller用法总结

    js arguments,jcallee caller用法总结

    这篇文章主要介绍了js中arguments, jcallee caller用法。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • js将table的每个td的内容自动赋值给其title属性的方法

    js将table的每个td的内容自动赋值给其title属性的方法

    下面小编就为大家带来一篇js将table的每个td的内容自动赋值给其title属性的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • ElementUI中Tree组件使用案例讲解

    ElementUI中Tree组件使用案例讲解

    这篇文章主要介绍了ElementUI中Tree组件使用案例讲解,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • JS for循环中i++ 和 ++i的区别介绍

    JS for循环中i++ 和 ++i的区别介绍

    这篇文章主要介绍了JS for循环中i++ 和 ++i的区别介绍的相关资料,需要的朋友可以参考下
    2016-07-07
  • javascript计时器编写过程与实现方法

    javascript计时器编写过程与实现方法

    这篇文章主要为大家详细介绍了javascript计时器编写过程与实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-02-02

最新评论