UNPKG

media_upload

Version:

simplify upload file using multiparty to the server

65 lines (57 loc) 1.87 kB
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, ""); } } };