node require('http') 模块实现文件上传
let filedata = require("fs").readFileSync(res.data);
let filename = "gamepath.txt";
Content-Disposition: form-data; name="file"; filename="1.txt"
Content-Type: text/plain
let blob = new Blob([file.toString()]);
var myBlob = new Blob([file], {
type: "text/plain",
});
let fileData = new FormData();
fileData.append("file", myBlob, "filename.txt");
console.log("file", file);
console.log(fileData.getAll("file")[0]);
debugger;
Axios.post(
"http://xxx.com/upload/upload.php",
fileData,
{
headers: {
"Content-Type": "multipart/form-data",
},
}
)
.then((res) => {
debugger;
})
.catch((err) => {
debugger;
});
upload(res.data);
POST http://xxx.com/upload/upload.php HTTP/1.1
User-Agent: PostmanRuntime/7.28.4
Accept: */*
Cache-Control: no-cache
Postman-Token: 6eb9a33d-bb75-4504-9447-865cde8e1ce6
Host: xxx
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------------------------083640736921080563941908
Content-Length: 10946
----------------------------083640736921080563941908
Content-Disposition: form-data; name="file"; filename="gamepath.txt"
Content-Type: text/plain
ʾ : ѹ 10.0.2.33514 װĿ¼: 汾 :10.0.2.33514 ͼ Ŀ¼:E:\sougou\SogouExplorer\SogouExplorer.exe ܹ :UnKnown keyname:SogouExplorer
ʾ : 0.0.1 װĿ¼: 汾 :0.0.1 ͼ Ŀ¼:C:\Users\admin\AppData\Local\Programs\ttvpn\ .exe,0 ܹ :UnKnown keyname:793735d7-9670-5898-a329-be9cb5a31d33
ʾ : 0.0.1 װĿ¼: 汾 :0.0.1 ͼ Ŀ¼:E:\ttvpn\ .exe,0 ܹ :UnKnown keyname:1fb8a7aa-e784-579d-a981-2142d5507b97
ʾ :360ѹ װĿ¼:E:\Program Files (x86)\360\360zip 汾 :4.0.0.1390 ͼ Ŀ¼:E:\Program Files (x86)\360\360zip\360zip.exe ܹ :x86 keyname:360ѹ
ʾ :360 װĿ¼:E:\360web\360Chrome\Chrome\Application 汾 :13.0.2290.0 ͼ Ŀ¼:E:\360web\360Chrome\Chrome\Application\360chrome.exe ܹ :UnKnown keyname:360Chrome
ʾ :Bing Wallpaper װĿ¼: 汾 :1.0.9.8 ͼ Ŀ¼: ܹ :x86 keyname:{980089C2-9D7D-4438-8DAF-C695E82DF18D}
ʾ :demo 0.1.0 װĿ¼: 汾 :0.1.0 ͼ Ŀ¼:C:\Users\admin\AppData\Local\Programs\demo\demo.exe,0 ܹ :UnKnown keyname:1c67fd43-2a5e-58a8-90f1-90ee1047e493
ʾ :Electron Fiddle װĿ¼:C:\Users\admin\AppData\Local\electron-fiddle 汾 :0.28.1 ͼ Ŀ¼:C:\Users\admin\AppData\Local\electron-fiddle\app.ico ܹ :UnKnown keyname:electron-fiddle
ʾ :FlashFXP 5 װĿ¼:C:\Program Files (x86)\FlashFXP 5\ 汾 :5.4.0.3970 ͼ Ŀ¼:C:\Program Files (x86)\FlashFXP 5\FlashFXP.exe ܹ :x86 keyname:FlashFXP 5
ʾ :Git version 2.20.1 װĿ¼:C:\Program Files\Git\ 汾 :2.20.1 ͼ Ŀ¼:C:\Program Files\Git\mingw64\share\git\git-for-windows.ico ܹ :x64 keyname:Git_is1
ʾ :Google Chrome װĿ¼:C:\Program Files (x86)\Google\Chrome\Application 汾 :101.0.4951.54 ͼ Ŀ¼:C:\Program Files (x86)\Google\Chrome\Application\chrome.exe,0 ܹ :x86 keyname:Google Chrome
ʾ :Google Chrome Canary װĿ¼:C:\Users\admin\AppData\Local\Google\Chrome SxS\Application 汾 :103.0.5051.0 ͼ Ŀ¼:C:\Users\admin\AppData\Local\Google\Chrome SxS\Application\chrome.exe,4 ܹ :UnKnown keyname:Google Chrome SxS
ʾ :KuaJingVS 5.2.3 װĿ¼: 汾 :5.2.3 ͼ Ŀ¼:E:\kuajingvs\KuaJingVS.exe,0 ܹ :x86 keyname:d8eca4f2-21e8-58bb-b7cb-99b4135d6325
ʾ : װĿ¼: 汾 :11.0.0.1811 ͼ Ŀ¼:C:\Users\admin\AppData\Roaming\Desktoplite\360DesktopLite.exe ܹ :UnKnown keyname:360DesktopLite
ʾ :Microsoft Edge װĿ¼:C:\Program Files (x86)\Microsoft\Edge\Application 汾 :101.0.1210.39 ͼ Ŀ¼:C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe,0 ܹ :x86 keyname:Microsoft Edge
ʾ :Microsoft OneDrive װĿ¼: 汾 :22.077.0410.0007 ͼ Ŀ¼:C:\Users\admin\AppData\Local\Microsoft\OneDrive\22.077.0410.0007\OneDriveSetup.exe,-101 ܹ :UnKnown keyname:OneDriveSetup.exe
ʾ :Microsoft Update Health Tools װĿ¼: 汾 :2.84.0.0 ͼ Ŀ¼: ܹ :x64 keyname:{29B15818-E79F-4AB0-8938-9410C807AD76}
ʾ :Microsoft Visual C++ 2010 x64 Redistributable - 10.0.40219 װĿ¼: 汾 :10.0.40219 ͼ Ŀ¼: ܹ :x64 keyname:{1D8E6291-B0D5-35EC-8441-6616F567A0F7}
ʾ :Microsoft Visual C++ 2010 x86 Redistributable - 10.0.40219 װĿ¼: 汾 :10.0.40219 ͼ Ŀ¼: ܹ :x86 keyname:{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
ʾ :Microsoft Visual C++ 2013 Redistributable (x64) - 12.0.30501 װĿ¼: 汾 :12.0.30501.0 ͼ Ŀ¼:C:\ProgramData\Package Cache\{050d4fc8-5d48-4b8f-8972-47c82c46020f}\vcredist_x64.exe,0 ܹ :x86 keyname:{050d4fc8-5d48-4b8f-8972-47c82c46020f}
ʾ :Microsoft Visual C++ 2013 Redistributable (x86) - 12.0.30501 װĿ¼: 汾 :12.0.30501.0 ͼ Ŀ¼:C:\ProgramData\Package Cache\{f65db027-aff3-4070-886a-0d87064aabb1}\vcredist_x86.exe,0 ܹ :x86 keyname:{f65db027-aff3-4070-886a-0d87064aabb1}
ʾ :Microsoft Visual C++ 2015-2022 Redistributable (x64) - 14.30.30704 װĿ¼: 汾 :14.30.30704.0 ͼ Ŀ¼:C:\ProgramData\Package Cache\{57a73df6-4ba9-4c1d-bbbb-517289ff6c13}\VC_redist.x64.exe,0 ܹ :x86 keyname:{57a73df6-4ba9-4c1d-bbbb-517289ff6c13}
ʾ :Microsoft Visual C++ 2015-2022 Redistributable (x86) - 14.30.30704 װĿ¼: 汾 :14.30.30704.0 ͼ Ŀ¼:C:\ProgramData\Package Cache\{4d8dcf8c-a72a-43e1-9833-c12724db736e}\VC_redist.x86.exe,0 ܹ :x86 keyname:{4d8dcf8c-a72a-43e1-9833-c12724db736e}
ʾ :Microsoft Visual Studio Code (User) װĿ¼:E:\Microsoft VS Code\ 汾 :1.67.0 ͼ Ŀ¼:E:\Microsoft VS Code\Code.exe ܹ :UnKnown keyname:{771FD6B0-FA20-440A-A002-3B3BAC16DC50}_is1
ʾ :Microsoft Visual Studio Installer װĿ¼:"C:\Program Files (x86)\Microsoft Visual Studio\Installer" 汾 :2.11.52.58712 ͼ Ŀ¼:"C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" ܹ :x64 keyname:{6F320B93-EE3C-4826-85E0-ADF79F8D4C61}
ʾ :Microsoft Windows Desktop Runtime - 3.1.20 (x64) װĿ¼: 汾 :3.1.20.30521 ͼ Ŀ¼:C:\ProgramData\Package Cache\{7aba3ea9-cc4d-448f-8585-b260642964af}\windowsdesktop-runtime-3.1.20-win-x64.exe,0 ܹ :x86 keyname:{7aba3ea9-cc4d-448f-8585-b260642964af}
ʾ :Mozilla Firefox (x64 zh-CN) װĿ¼:C:\Program Files\Mozilla Firefox 汾 :100.0 ͼ Ŀ¼:C:\Program Files\Mozilla Firefox\firefox.exe,0 ܹ :x64 keyname:Mozilla Firefox 100.0 (x64 zh-CN)
ʾ :Mozilla Maintenance Service װĿ¼: 汾 :80.0.1 ͼ Ŀ¼:C:\Program Files (x86)\Mozilla Maintenance Service\Uninstall.exe,0 ܹ :x64 keyname:MozillaMaintenanceService
ʾ :Node.js װĿ¼: 汾 :16.13.1 ͼ Ŀ¼:C:\Windows\Installer\{F9421959-957E-4D50-857C-C6B8F44A5F07}\NodeIcon ܹ :x86 keyname:{F9421959-957E-4D50-857C-C6B8F44A5F07}
ʾ :Notepad3 5.20.915.1 װĿ¼:D:\Notepad3\notepad\ 汾 :5.20.915.1 ͼ Ŀ¼:D:\Notepad3\notepad\Notepad3.exe ܹ :x64 keyname:Notepad3_is1
ʾ :Npcap װĿ¼:C:\Program Files\Npcap 汾 :1.55 ͼ Ŀ¼:C:\Program Files\Npcap\uninstall.exe ܹ :x86 keyname:NpcapInst
ʾ :NVIDIA ͼ 457.51 װĿ¼:C:\Program Files\NVIDIA Corporation\Installer2\Display.Driver.{B7127908-34BD-4690-90A3-B903B8650908} 汾 :457.51 ͼ Ŀ¼:C:\Program Files\NVIDIA Corporation\Installer2\InstallerCore\NVI2.dll,0 ܹ :x64 keyname:{B2FE1952-0186-46C3-BAEC-A80AA35AC5B8}_Display.Driver
ʾ :Origin װĿ¼:E:\Origin 汾 :10.5.112.50486 ͼ Ŀ¼:E:\Origin\OriginUninstall.exe ܹ :x86 keyname:Origin
ʾ :phpstudy ɻ װĿ¼:E:\phpstudy_pro\ 汾 :8.1.1.2 ͼ Ŀ¼:E:\phpstudy_pro\COM\phpstudy_pro.exe ܹ :x86 keyname:phpstudy_pro_is1
ʾ :Postman-win64-8.11.1 װĿ¼:C:\Users\admin\AppData\Local\Postman 汾 :8.11.1 ͼ Ŀ¼: ܹ :UnKnown keyname:Postman
ʾ :PowerToys (Preview) װĿ¼:E:\poweToys\ 汾 :0.51.1 ͼ Ŀ¼:C:\Windows\Installer\{DAA80B28-95F8-4E2C-BED4-3446474AEDA4}\powertoys.exe ܹ :x64 keyname:{DAA80B28-95F8-4E2C-BED4-3446474AEDA4}
ʾ :Progress Telerik Fiddler װĿ¼:E:\Program Files (x86)\Fiddler2 汾 :5.0.20204.45441 ͼ Ŀ¼:"E:\Program Files (x86)\Fiddler2\App.ico" ܹ :UnKnown keyname:Fiddler2
ʾ :PyCharm Community Edition 2021.1.1 װĿ¼:E:\PyCharm Community Edition 2021.1.1 汾 :211.7142.13 ͼ Ŀ¼:E:\PyCharm Community Edition 2021.1.1\bin\pycharm64.exe ܹ :x86 keyname:PyCharm Community Edition 2021.1.1
ʾ :Python 3.10.1 (64-bit) װĿ¼: 汾 :3.10.1150.0 ͼ Ŀ¼:C:\Users\admin\AppData\Local\Package Cache\{af822d5e-759c-4e77-9696-3cc835cd54a9}\python-3.10.1-amd64.exe,0 ܹ :UnKnown keyname:{af822d5e-759c-4e77-9696-3cc835cd54a9}
ʾ :Python 3.9.0 (64-bit) װĿ¼: 汾 :3.9.150.0 ͼ Ŀ¼:C:\Users\admin\AppData\Local\Package Cache\{a2a37ca0-8ebd-4d7e-b4b8-e6b1740c2ce0}\python-3.9.0-amd64.exe,0 ܹ :UnKnown keyname:{a2a37ca0-8ebd-4d7e-b4b8-e6b1740c2ce0}
ʾ :Python Launcher װĿ¼: 汾 :3.10.7644.0 ͼ Ŀ¼:C:\Windows\Installer\{7DE12550-BE09-44DD-BDB4-0EC26BA89DAF}\ARPIcon ܹ :x86 keyname:{7DE12550-BE09-44DD-BDB4-0EC26BA89DAF}
ʾ : е ʵ װĿ¼: 汾 :8.9 ͼ Ŀ¼:E:\Dict\YoudaoDict.exe,0 ܹ :x86 keyname: е ʵ
ʾ : UU װĿ¼: 汾 :4.22.0.50 ͼ Ŀ¼:E:\Netease\UU\uu.exe ܹ :x86 keyname:NeteaseGacc
ʾ :Steam װĿ¼: 汾 :2.10.91.91 ͼ Ŀ¼:E:\steam\uninstall.exe ܹ :x86 keyname:Steam
ʾ :TortoiseSVN 1.14.0.28885 (64 bit) װĿ¼: 汾 :1.14.28885 ͼ Ŀ¼:C:\Windows\Installer\{7FB289B9-BA33-446A-A0E8-9BF59226A631}\TSVNIcon ܹ :x64 keyname:{7FB289B9-BA33-446A-A0E8-9BF59226A631}
ʾ :Update for Windows 10 for x64-based Systems (KB5001716) װĿ¼: 汾 :4.91.0.0 ͼ Ŀ¼: ܹ :x64 keyname:{82BD0A1C-815F-487F-9AE7-CE73DA413CFF}
ʾ :Visual Studio ɹ 2019 װĿ¼:C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools 汾 :16.11.8 ͼ Ŀ¼:C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\LaunchDevCmd.bat ܹ :x86 keyname:25c39061
ʾ :Windows Խ ״ װĿ¼: 汾 :3.3.2110.22002 ͼ Ŀ¼: ܹ :x64 keyname:{ADECDDAB-3533-477B-B35B-B2DC3F34A7D4}
ʾ :Wireshark 3.6.2 64-bit װĿ¼:E:\Wireshark 汾 :3.6.2 ͼ Ŀ¼:E:\Wireshark\Wireshark.exe,0 ܹ :x86 keyname:Wireshark
ʾ :WPS Office (11.1.0.11636) װĿ¼: 汾 :11.1.0.11636 ͼ Ŀ¼:E:\Program Files (x86)\Kingsoft\WPS Office\ksolaunch.exe ܹ :UnKnown keyname:Kingsoft Office
ʾ : Transocks װĿ¼: 汾 :3.2.6 ͼ Ŀ¼:E:\transocks\transocks\Uninstall.exe ܹ :x64 keyname:transocks
ʾ : ſ ߹ 1.05.2111300 װĿ¼: 汾 :1.05.2111300 ͼ Ŀ¼:E:\ web ߹ \ ſ ߹ .exe ܹ :x86 keyname: ſ ߹
ʾ : Ѹ 0.3.6 װĿ¼: 汾 :0.3.6 ͼ Ŀ¼:C:\Program Files (x86)\jixunjsq\ Ѹ .exe,0 ܹ :x86 keyname:7165cfad-937f-5d61-9d29-5ecf722c8e36
ʾ : Ѹ ٰ 3.0 װĿ¼: 汾 :3.0.5.9 ͼ Ŀ¼:E:\JiXunJsq\jixunjsqspl\Uninstall.exe ܹ :x64 keyname:jixunjsq
ʾ : Ѷ μ װĿ¼: 汾 :3.0.9672.134 ͼ Ŀ¼:E:\tengxunjsq\QMProxyAccelerator\QMProxyAcceler.exe ܹ :x86 keyname:QMProxyAccelerator
ʾ : ѶQQ װĿ¼:E:\QQ\ 汾 :9.5.3.28008 ͼ Ŀ¼:C:\Windows\Installer\{052CFB79-9D62-42E3-8A15-DE66C2C97C3E}\qq.ico ܹ :x86 keyname:{052CFB79-9D62-42E3-8A15-DE66C2C97C3E}
ʾ :Զ װĿ¼:C:\Users\admin\AppData\Local\Apps\Remote Desktop\ 汾 :1.2.2606.0 ͼ Ŀ¼: ܹ :x64 keyname:{09DA1EF9-8EF9-41EA-95CD-79BD4EC857BE}
ʾ : װĿ¼: 汾 :5.1.15-Release.24 ͼ Ŀ¼:C:\Program Files (x86)\DingDing\main\current\logo.ico ܹ :x86 keyname:
ʾ : װĿ¼:E:\LeiGod_Acc\ 汾 :7.0.6.0 ͼ Ŀ¼:E:\LeiGod_Acc\leigod.exe,0 ܹ :x64 keyname:BC3D821C-7EFA-41F8-B1C2-8A55DDFE5A67_is1
----------------------------083640736921080563941908
Content-Disposition: form-data; name="test"
1
----------------------------083640736921080563941908
Content-Disposition: form-data; name="test2"
222
----------------------------083640736921080563941908--
const http = require('http');
const https = require('https');
const fs = require('fs');
const URL = require('url');
const requestConfig = {
hostname: 'xxx.com',
};
export function upload(payload, file) {
let { url, method } = payload;
let { filedata, filename } = file;
//生成分隔数据
// var boundaryKey = '----WebKitFormBoundaryjLVkbqXtIi0YGpaB';
var boundaryKey = "----" + new Date().getTime();
var formdata =
"--" +
boundaryKey +
"\r\n" +
`Content-Disposition:form-data; name="file"; filename="${filename}"\r\n` +
"Content-Type:text/plain\r\n\r\n";
formdata += filedata;
formdata += "\r\n--" + boundaryKey + "--";
let urlObj = URL.parse(url);
let protocol = urlObj.protocol;
let options = Object.assign({}, requestConfig, {
hostname: urlObj.host ? urlObj.host : requestConfig.hostname,
port: urlObj.port,
path: urlObj.path,
method: method,
})
return new Promise((resolve, reject) => {
//发送请求
var req = (protocol == 'http:' ? http : https).request(options, function (res) {
let chunks = '';
res.setEncoding('utf8');
res.on('data', function (data) {
chunks += data;
});
res.on('end', () => {
try {
resolve(JSON.parse(chunks.toString()));
} catch (error) {
resolve(chunks.toString());
}
})
});
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(formdata, 'utf8'));
req.write(formdata);
req.end();
});
}
https://www.cnblogs.com/king_domain/p/5630665.html
https://blog.csdn.net/haiyan2012/article/details/8540802