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

WBOY
リリース: 2016-05-16 16:54:25
オリジナル
1308 人が閲覧しました

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" は実際の文字列を表します。快適に見えるように、視覚的にも調整されています。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!