ホームページ ウェブフロントエンド jsチュートリアル Node.js シミュレーション ブラウザ ファイルのアップロード example_javascript スキル

Node.js シミュレーション ブラウザ ファイルのアップロード example_javascript スキル

May 16, 2016 pm 04:54 PM
node.js ファイルのアップロード シミュレーション ブラウザ

OSChina に投稿しました。これも私のものですが、ここに置きます (笑)

このコードは一度に 1 つのファイルしかアップロードできません~~

コードをコピーします コードは次のとおりです。

var path=require("path");
var fs=require(" fs");
var http=require("http");

//ポスト値ペイロード
var getfield=function(field, value) {
return 'Content-Disposition: form-data; name="' field '"rnrn' value 'rn'
}

//ファイルペイロード
var getfieldHead=function (field, filename) {
var fileFieldHead ='Content-Disposition: フォームデータ; name="' フィールド '" ファイル名 '"rn' 'Content-Type: ' getMime(filename) 'rnrn';
return fileFieldHead; }
//Mime を取得
var getMime=function (filename) {
var mimes = {
'.png': 'image/png',
'.gif': 'image /gif',
' .jpg': 'image/jpeg',
'.jpeg': 'image/jpeg',
'.js': 'application/json',
' .torrent': 'application/octet -stream'
var
var mime = mimes[ext]; :'application/octet-stream' ;
return mime;
}
//境界チェックのランダム文字列を取得します
var getBoundary=function() {
var max = 9007199254740992; >var dec = Math.random() * max;
var hex = dec.toString(36);
return border;
//境界を取得
var getBoundaryBorder=function (boundary ) {
return '--' 境界 'rn';
}
//フィールドの書式設定
function fieldPayload(opts) {
var payload= [];
for(opts.field の変数 ID){
payload.push(getfield(id,opts.field[id]));
payload.push("") ;
return payload.join (getBoundaryBorder(opts.boundary));
}

//post data
function postRequest (opts) {
filereadstream(opts,function (buffer) ) {
var options= require('url').parse(opts.url);
var Header={};
var h=getBoundaryBorder(opts.boundary); fieldPayload(opts);
var a=getfieldHead(opts.param,opts.file);
var d="rn" h; )buffer.length;
Header["Content-Type"]='multipart/form-data; opts.boundary;
options.method='POST' ;
var req=http .request(options,function(res){
var data='';
res.on('data', function (chunk) {
data =chunk;
});
res.on('end', function () {
console.log(res.statusCode)
console.log(data);
}); >});
req .write(h e a);log.diy(h e a バッファ d);
req.end(d); 🎜>
}
//ファイルの読み取り
function filereadstream(opts, fn) {
var readstream = fs.createReadStream(opts.file,{flags:'r',encoding:null}) ;
var chunks= [];
var length = 0;
readstream.on('data', function(chunk) {
length = chunk.length;
chunks(チャンク);
} );
readstream.on('end', function() {
varbuffer = new Buffer(length);
for(var i = 0, pos = 0,サイズ = chunks.length; i
chunks[i].copy(バッファ, pos);
fn(バッファ);
} );
}

//各種設定
var opt={
"url":"http://xxxx.xx",//url
"file" :"00.jpg",//ファイルの場所
"param":"file",//ファイルアップロードフィールド名
"field"://その他の投稿フィールド
"client":"1 ",
"title":"ok"
},
"boundary":"----WebKitFormBoundary" getBoundary()
}

postRequest(opt);
/*
-----WebKitFormBoundaryuzKmkAovUuYsQ1Dtrn

Content-Disposition: フォームデータ名 = "ファイル名"; >Content-Type: application /octet-stream
rn
rn filern

-----WebKitFormBoundaryuzKmkAovUuYsQ1Dtrn

Content-Disposition: name="fieldName; "
rn
rn valuern

------WebKitFormBoundaryuzKmkAovUuYsQ1Dt--
*/


最後のコメントは標準形式です" n" は実際の文字列を表します。快適に見えるように、視覚的にも調整されています。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

グラデーションの背景を持つカードとクーポンのレイアウトに対するギャップ効果を達成する方法は? グラデーションの背景を持つカードとクーポンのレイアウトに対するギャップ効果を達成する方法は? Apr 05, 2025 am 07:48 AM

カードクーポンレイアウトのギャップ効果を実現します。カードクーポンレイアウトを設計するとき、特に背景が勾配である場合、カードクーポンにギャップを追加する必要があることがよくあります...

Webページにローカルにインストールされている「Jingnan Mai Round Body」を正しく表示するにはどうすればよいですか? Webページにローカルにインストールされている「Jingnan Mai Round Body」を正しく表示するにはどうすればよいですか? Apr 05, 2025 pm 10:33 PM

最近、Webページにローカルにインストールされたフォントファイルを使用して、インターネットから無料のフォントをダウンロードし、システムに正常にインストールしました。今...

PCページズームの後もスタイルは同じままです。可能なソリューションは何ですか? PCページズームの後もスタイルは同じままです。可能なソリューションは何ですか? Apr 05, 2025 am 07:51 AM

ページのスタイルをズームして、ページのズームイン後に同じように保持するという課題。多くの開発者は、PCページを作成するときに難しい問題に遭遇します。

58.com作業ページでリアルタイムアプリケーションと視聴者のデータを取得する方法は? 58.com作業ページでリアルタイムアプリケーションと視聴者のデータを取得する方法は? Apr 05, 2025 am 08:06 AM

クロール中に58.com作業ページの動的データを取得するにはどうすればよいですか? Crawlerツールを使用して58.comの作業ページをrawったら、これに遭遇する可能性があります...

CSSを介してサイズ変更シンボルをカスタマイズし、背景色で均一にする方法は? CSSを介してサイズ変更シンボルをカスタマイズし、背景色で均一にする方法は? Apr 05, 2025 pm 02:30 PM

CSSでサイズ変更シンボルをカスタマイズする方法は、背景色で統一されています。毎日の開発では、調整など、ユーザーインターフェイスの詳細をカスタマイズする必要がある状況に遭遇することがよくあります...

node.jsでHTMLテキストを取得するためにリクエストライブラリを使用する場合、例外をエンコードする理由は何ですか?それを解決する方法は? node.jsでHTMLテキストを取得するためにリクエストライブラリを使用する場合、例外をエンコードする理由は何ですか?それを解決する方法は? Apr 05, 2025 am 07:03 AM

node.js環境でHTMLテキストコンテンツを取得するためにリクエストライブラリを使用する場合のコーディング例外の理由とソリューション。 node.jsを使用する開発プロセス中に、しばしば...

See all articles