中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

Node.js實現文件上傳
來源:易賢網 閱讀:1558 次 日期:2016-07-26 14:38:05
溫馨提示:易賢網小編為您整理了“Node.js實現文件上傳”,方便廣大網友查閱!

這篇文章主要介紹了Node.js實現文件上傳的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

在工作中碰到了這樣的需求,需要用nodejs 來上傳文件,之前也只是知道怎么通過瀏覽器來上傳文件, 用nodejs的話, 相當于模擬瀏覽器的行為。 google 了一番之后, 明白了瀏覽器無非就是利用http協議來給服務器傳輸數據, 具體協議就是《RFC 1867 - Form-based File Upload in HTML》, 在瀏覽器上通過form 表單來上傳文件就是通過這個協議,我們可以先看看瀏覽器給服務端發送了什么數據, 就可以依葫蘆畫瓢的把上傳功能實現出來。說起form 表單上傳文件的話, 大家應該很熟悉:

<form action="http://www.qq.com/" method="post">

<input type="text" name="text1" /><br />

<input type="text" name="text2" /><br />

<input type="submit" />

</form>

提交時, 用fiddler 抓包可以看到向服務端發出這樣的數據:

POST http://www.qq.com/ HTTP/1.1

Host: www.qq.com

Content-Length: 23

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

text1=hello&text2=world

值得注意的是Content-Type默認為application/x-www-form-urlencoded,所以消息會經過URL編碼。比如“你好”會編碼為 %E4%BD%A0%E5%A5%BD。

接下來我們看一下通過form 表單是怎么上傳的。大家應該也不陌生:

<form action="http://www.qq.com" method="post" enctype="multipart/form-data">

<input type="file" name="myfile" />

<input type="submit" value="submit" />

</form>

然后新建一個只有hello world字樣的upload.txt文本文件上傳上去,我們再吃用fiddler 來抓下包, 可以發現發送過去的數據稍微復雜了一些(已經去掉了很多的其它沒關系的請求行,比如緩存控制和cookie之類的):

POST http://www.qq.com/ HTTP/1.1

Host: www.qq.com

Content-Length: 199

Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywr3X7sXBYQQ4ZF5G

------WebKitFormBoundarywr3X7sXBYQQ4ZF5G

Content-Disposition: form-data; name="myfile"; filename="upload.txt"

Content-Type: text/plain

hello world

------WebKitFormBoundarywr3X7sXBYQQ4ZF5G--

根據RFC 1867的定義,我們需要生成一段邊界數據,這個數據不能在內容的其它地方出現,這個可以自己定義, 在每個瀏覽器的生成算法可能都不一樣, 上面的boundary就是分隔數據,生成了分隔數據之后, 就可以把分隔數據放在頭部的Content-Type里面傳送給服務端, 也就是上文的 Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywr3X7sXBYQQ4ZF5G, 另外,上傳的內容,需要用分隔數據來分隔成若干個段,然后每段數據里面都有文件的文件名,還有上傳時候的name,服務端就是用這個name來接收文件,還有文件的類型Content-Type,在這個例子里是 text/plain,如果上傳的是png圖片就是image/png。文件類型的一個空行后就是所上傳的文件的內容,在這個例子里也是為了容易理解所以上傳的是文本文件所以內容直接就能夠顯示出來,如果上傳的是圖片文件, 因為是二進制文件,fiddler 就顯示的是亂碼。 文件的內容結束之后就是一個空行再加上邊界數據。

了解了發送格式的細節之后, 下一步就是使用nodejs來編程實現,簡單來講, 就是按照格式把數據發送給服務端就行了。

const http = require('http');

const fs = require('fs');

//post地址為本地服務的一個php,用于測試上傳是否成功

var options = {

hostname: 'localhost',

port: 80,

path: '/get.php',

method: 'POST'

}

//生成分隔數據

var boundaryKey = '----WebKitFormBoundaryjLVkbqXtIi0YGpaB';

//讀取需要上傳的文件內容

fs.readFile('./upload.txt', function (err, data) {

//拼裝分隔數據段

var payload = '--' + boundaryKey + '\r\n' + 'Content-Disposition:form-data; name="myfile"; filename="upload.txt"\r\n' + 'Content-Type:text/plain\r\n\r\n';

payload += data;

payload += '\r\n--' + boundaryKey + '--';

//發送請求

var req = http.request(options, function (res) {

res.setEncoding('utf8');

res.on('data', function (chunk) {

console.log('body:' + chunk);

});

});

req.on('error', function(e) {

console.error("error:"+e);

});

//把boundary、要發送的數據大小以及數據本身寫進請求

req.setHeader('Content-Type', 'multipart/form-data; boundary='+boundaryKey+'');

req.setHeader('Content-Length', Buffer.byteLength(payload, 'utf8'));

req.write(payload);

req.end();

});

本文重點在于了解協議并且用代碼實現出來, 代碼組織上面還有很多優化的地方。

最后在本地apache,簡單寫一個php來保存上傳的文件來用作測試:

<?php

$filePath = './upload.txt';

move_uploaded_file($_FILES['myfile']['tmp_name'] , $filePath);

echo "ok";

?>

另外,根據RFC 1867 還可以實現一次上傳多個文件的功能, 這個在這里就不詳述, 需要的話可以詳細參考RFC 1867來實現。

以上所述是小編給大家介紹的Node.js實現文件上傳,希望對大家有所幫助

更多信息請查看網絡編程
易賢網手機網站地址:Node.js實現文件上傳
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲电影观看| 国产欧美91| 亚洲欧美一区二区原创| 欧美怡红院视频| 久久免费精品视频| 久久人人看视频| 欧美日本免费一区二区三区| 欧美午夜激情在线| 韩日欧美一区| 99综合电影在线视频| 亚洲欧美日韩在线高清直播| 欧美日韩成人综合在线一区二区| 国内成+人亚洲| 一区二区久久| 欧美国产日产韩国视频| 一区在线影院| 久久久久88色偷偷免费| 国产精品r级在线| 亚洲精品乱码久久久久久日本蜜臀| 午夜亚洲福利在线老司机| 欧美图区在线视频| 亚洲理论在线观看| 久久久久一区二区| 国产综合视频在线观看| 欧美亚洲在线视频| 国产精品久久久久久久一区探花| 亚洲人精品午夜在线观看| 久热国产精品视频| 国产一区二区精品丝袜| 亚洲一区久久久| 欧美午夜不卡视频| 一片黄亚洲嫩模| 欧美日韩大陆在线| aa级大片欧美三级| 欧美激情一区二区三区在线| 伊人久久亚洲热| 乱中年女人伦av一区二区| 一区二区在线看| 美女亚洲精品| 亚洲国产精品电影| 欧美激情一区二区三区高清视频| 亚洲欧洲一区二区在线观看| 欧美国产在线观看| 日韩一区二区精品葵司在线| 欧美精品久久一区| 中文精品视频| 国产精品剧情在线亚洲| 亚洲欧美成人网| 国产一区二区三区电影在线观看 | 玉米视频成人免费看| 久久久国产一区二区| 国产欧美日韩综合一区在线播放| 亚洲欧美电影在线观看| 欧美日韩一二三区| 亚洲一区国产精品| 国产一区二区三区久久精品| 久久久久国产精品一区三寸 | aa级大片欧美| 欧美四级电影网站| 欧美一激情一区二区三区| 国语自产在线不卡| 欧美激情精品久久久久久| 一本色道久久88精品综合| 国产精品永久免费视频| 久久成人18免费观看| 在线成人中文字幕| 欧美日韩一区二区视频在线观看| 亚洲欧美在线播放| 亚洲电影毛片| 国产精品vvv| 久久综合一区二区三区| 在线视频中文亚洲| 国产一区999| 欧美偷拍另类| 蜜臀av在线播放一区二区三区| 亚洲一区二区在线免费观看视频 | 久热精品在线| 正在播放欧美一区| 91久久精品国产91久久| 国产麻豆视频精品| 欧美精品一区二区三区蜜桃 | 国产精品99久久99久久久二8| 国产精品自拍视频| 欧美精品一区二区三区蜜臀| 久久福利影视| 亚洲欧美国产制服动漫| 亚洲国产精品小视频| 国产主播一区| 国产精品久久国产三级国电话系列 | 久久se精品一区精品二区| 亚洲国产成人久久综合| 国产亚洲成av人在线观看导航| 欧美精品成人91久久久久久久| 久久久久久69| 久久av在线| 欧美亚洲免费电影| 欧美在线不卡视频| 亚洲在线免费观看| 亚洲视频每日更新| 91久久精品国产| 亚洲激情成人在线| 亚洲国产精品123| 1204国产成人精品视频| 精品成人在线| 亚洲第一主播视频| 亚洲欧洲精品一区二区三区不卡| 狠狠久久婷婷| 在线观看欧美日韩国产| 亚洲成色999久久网站| 一区二区三区在线观看欧美| 影音先锋一区| 亚洲人精品午夜在线观看| 日韩视频一区二区三区在线播放| 亚洲乱亚洲高清| 中文高清一区| 欧美一级网站| 久久精品女人的天堂av| 久久人人97超碰精品888| 老司机免费视频久久| 美女网站久久| 欧美日产一区二区三区在线观看 | 免费影视亚洲| 欧美激情欧美激情在线五月| 欧美国产成人在线| 国产精品久久久久久久久久尿| 国产精品欧美一区二区三区奶水| 国产日韩欧美精品| 亚洲激情在线播放| 亚洲一区二区精品| 久久精品五月| 欧美精品一区在线| 国产目拍亚洲精品99久久精品| 红桃视频国产精品| 亚洲日韩欧美一区二区在线| 亚洲视频在线视频| 久久人人超碰| 国产精品白丝黑袜喷水久久久| 国产亚洲激情视频在线| 亚洲精品一区在线观看| 午夜精品电影| 欧美国产一区二区在线观看| 国产精品试看| 亚洲人www| 久久国产精品久久久久久久久久 | 亚洲日产国产精品| 欧美亚洲系列| 欧美日韩亚洲一区二区三区在线| 国产乱肥老妇国产一区二| 亚洲激情在线观看视频免费| 午夜精品网站| 欧美日韩视频在线第一区| 黑人巨大精品欧美一区二区| 在线亚洲成人| 欧美国产日韩一区二区在线观看| 国产一区999| 亚洲女同性videos| 欧美精品在线免费| 国产视频久久| 亚洲综合日韩| 国产精品h在线观看| 在线欧美视频| 久久久国产精品一区二区中文 | 欧美成人有码| 国内精品美女在线观看| 亚洲一区二区三区午夜| 欧美日本一区| 亚洲精品在线免费| 久久综合电影| 一区二区在线视频播放| 欧美一区二区三区成人| 欧美视频四区| 亚洲神马久久| 欧美午夜剧场| 亚洲自拍啪啪| 国产精品免费看久久久香蕉| 日韩一二三区视频| 欧美精品免费在线| 亚洲欧洲日本在线| 欧美韩日精品| 日韩视频中文| 欧美午夜精品久久久久免费视| 亚洲国产日韩欧美在线动漫| 玖玖玖国产精品| 在线视频国产日韩| 欧美mv日韩mv国产网站app| 一区二区三区在线视频播放| 另类欧美日韩国产在线| 亚洲国产第一页| 欧美日本网站| 亚洲桃花岛网站| 国产欧美日韩不卡| 久久精品国产2020观看福利| 一区二区在线观看视频| 欧美成年人网站| 正在播放欧美视频| 国产亚洲va综合人人澡精品| 免费欧美网站| 亚洲视频在线二区| 国内成+人亚洲+欧美+综合在线| 美国十次成人|