前端通過表單將pdf等文件傳入后端
我們知道在js中我們可以通過:
<input type="file" name="file" id="fileInput" accept="image/*">
來輸入文件。其中type指后端url,accept來限制傳入類型。
前端通過表單形式將其傳入后端
那么前端是怎么將這一整個文件打包傳入后端的呢?
原來前端通過文件上傳表單的方式將文件傳輸?shù)胶蠖?。這通常涉及使用 HTML 的 <form>
元素和 <input type="file">
輸入框,以及設(shè)置適當(dāng)?shù)谋韱螌傩詠碇С治募蟼鳌?/p>
Payload截圖
可以看到我在使用ant design vue框架時其文件傳輸?shù)膬?nèi)容包含狀態(tài),上傳時間,文件名字等。
文件上傳的流程:
- 用戶在文件輸入框中選擇一個文件。
- 用戶點擊提交按鈕,瀏覽器將會把表單數(shù)據(jù)(包括選定的文件)打包成
multipart/form-data
格式的請求體。 - 請求被發(fā)送到指定的后端URL(在這個例子中是
/upload
)。 - 后端接收到請求后,可以通過相應(yīng)的框架或庫來解析
multipart/form-data
,獲取到文件數(shù)據(jù),并進(jìn)行進(jìn)一步處理,例如保存文件到服務(wù)器或者進(jìn)行文件內(nèi)容分析等操作。
文件上傳表單示例:
<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"
指定了表單提交的目標(biāo)后端URL。method="POST"
指定了使用POST方法提交表單。enctype="multipart/form-data"
表示表單中包含文件上傳,這是必需的,因為文件上傳需要使用multipart/form-data
類型來傳輸文件數(shù)據(jù)。
<input type="file" name="file" id="fileInput">
是文件上傳的輸入框,其中:type="file"
表示這是一個文件輸入框,允許用戶選擇文件。name="file"
指定了后端接收文件時的字段名稱,這個名稱在后端處理文件時很重要。id="fileInput"
可以用來通過 JavaScript 獲取文件輸入框的引用,以便在用戶選擇文件后執(zhí)行一些操作(例如顯示文件名或大?。?/li>
<button type="submit">上傳文件</button>
是一個提交按鈕,點擊它會觸發(fā)表單提交操作。
后端處理文件上傳的例子:
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; // 處理文件,例如保存到服務(wù)器或者返回其他響應(yīng) res.send('文件上傳成功'); }); app.listen(3000, () => { console.log('服務(wù)器運行在 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
超全局?jǐn)?shù)組來接收上傳的文件,并使用move_uploaded_file()
函數(shù)將文件從臨時位置移動到指定的目標(biāo)位置。
用JS將文件傳入后端
上面以及展示了html文件上傳表單的示例,下面再展示通過JavaScript監(jiān)聽文件選擇事件來傳遞。
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構(gòu)造函數(shù)來實例化一個表單類型。
axios傳遞
axios({ url: '', method: 'POST', data: fd }).then(res => { console.log(res); })
通過ajax就可以將文件傳入后端。
總結(jié)
到此這篇關(guān)于前端通過表單將pdf等文件傳入后端的文章就介紹到這了,更多相關(guān)前端將pdf等文件傳入后端內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js arguments,jcallee caller用法總結(jié)
這篇文章主要介紹了js中arguments, jcallee caller用法。需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11js將table的每個td的內(nèi)容自動賦值給其title屬性的方法
下面小編就為大家?guī)硪黄猨s將table的每個td的內(nèi)容自動賦值給其title屬性的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10JS for循環(huán)中i++ 和 ++i的區(qū)別介紹
這篇文章主要介紹了JS for循環(huán)中i++ 和 ++i的區(qū)別介紹的相關(guān)資料,需要的朋友可以參考下2016-07-07