Home > Web Front-end > JS Tutorial > body text

Node.js simulation browser file upload example_javascript skills

WBOY
Release: 2016-05-16 16:54:25
Original
1307 people have browsed it

I posted it on OSChina, that one is mine too, now I put it here, haha ​​

This code can only upload one file at a time~~

Copy the code The code is as follows:

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

//post value payload
var getfield=function(field, value) {
return 'Content-Disposition: form-data; name="' field '"rnrn' value 'rn';
}

//File payload
var getfieldHead=function (field, filename) {
var fileFieldHead='Content-Disposition: form- data; name="' field '"; filename="' filename '"rn' 'Content-Type: ' getMime(filename) 'rnrn';
return fileFieldHead;
}
//Get 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 ext = path.extname(filename);
var mime = mimes[ext];
mime=!!mime?mime:'application/octet-stream' ;
return mime;
}
//Get the bounds check random string
var getBoundary=function() {
var max = 9007199254740992;
var dec = Math.random() * max;
var hex = dec.toString(36);
var boundary = hex;
return boundary;
}
//Get boundary
var getBoundaryBorder=function (boundary ) {
return '--' boundary 'rn';
}
//Field formatting
function fieldPayload(opts) {
var payload=[];
for( var id in opts.field){
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);
var e=fieldPayload(opts);
var a=getfieldHead(opts.param,opts.file);
var d="rn" h;
Header["Content-Length"]=Buffer.byteLength(h e a d) buffer.length;
Header["Content-Type"]='multipart/form-data; boundary=' opts.boundary;
options.headers=Header;
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 buffer d);
req.write(buffer);
req.end(d);
});

}
//Read file
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.push(chunk);
} );
readstream.on('end', function() {
var buffer = new Buffer(length);
for(var i = 0, pos = 0, size = chunks.length; i < size; i ) {
chunks[i].copy(buffer, pos);
pos = chunks[i].length;
}
fn(buffer);
} );
}

//Various settings
var opt={
"url":"http://xxxx.xx",//url
"file" :"00.jpg",//File location
"param":"file",//File upload field name
"field":{//Other post fields
"client":"1 ",
"title":"ok"
},
"boundary":"----WebKitFormBoundary" getBoundary()
}

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

Content-Disposition: form-data; name="file"; filename="00.jpg"rn
Content-Type: application /octet-stream
rn
rn filern

------WebKitFormBoundaryuzKmkAovUuYsQ1Dtrn

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

------WebKitFormBoundaryuzKmkAovUuYsQ1Dt--
*/

The last comment is the standard format" n" represents the actual string. In order to look comfortable, it is also visually adjusted.
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!