media_upload
Version:
simplify upload file using multiparty to the server
65 lines (57 loc) • 1.87 kB
JavaScript
var multiparty = require('multiparty'),
fs = require('fs');
var gm = require('gm').subClass({
imageMagick: true
});
exports.upload_file = function(http_request, settings, call_back) {
var configrations = {};
if (typeof(settings) === 'function') {
configrations = JSON.parse(fs.readFileSync('./configuration.json', 'utf8'));
}
else {
configrations.upload_to = settings.upload_to_folder;
configrations.public_url = settings.public_url;
}
try {
var size = '';
var destination_path = '';
var file_name = '';
var form = new multiparty.Form();
form.on('error', function(error) {
return call_back(error, "");
});
form.on('file', function(name, file) {
var temporal_path = file.path;
destination_path = configrations.upload_to + file.originalFilename;
file_name = file.originalFilename;
var input_stream = fs.createReadStream(temporal_path);
var output_stream = fs.createWriteStream(destination_path);
input_stream.pipe(output_stream);
input_stream.on('end', function() {
fs.unlinkSync(temporal_path);
if (fs.existsSync(configrations.upload_to + 'thump/') === false) {
fs.mkdirSync(configrations.upload_to + 'thump/');
}
gm(configrations.upload_to + file_name).thumb(200, 200, configrations.upload_to + 'thump/' + file_name, 50, function(error){
});
});
});
form.on('close', function() {
if (typeof(settings) === 'function') {
settings("", configrations.public_url + file_name);
}
else {
call_back("", configrations.public_url + file_name);
}
});
form.parse(http_request);
}
catch (exception) {
if (typeof(settings) === 'function') {
settings(exception, "");
}
else {
call_back(exception, "");
}
}
};