Я пытаюсь записать на диск загруженный файл POST внутри формы с атрибутом enctype = "multipart / form-data", и я получаю данные на сервере и мне удалось их отсортировать (получить содержимое внутри файла и имени файла ), но когда я пишу на диск, файл не читается. Эти изображения могут проиллюстрировать мою ситуацию. Image1 показывает, как я получаю данные, и image2 показывает, как они отображаются. Я не знаю, что случилось.
Я использую trid-кодирование в виде base64, двоичное, и я не кодирую его, отправляя прямо, как это происходит из формы, но безуспешно.
Изображение 1 http://es.tinypic.com/view.php?pic=sou610&s=9#.XRuig-tKiUk
Изображение 2 http://es.tinypic.com/view.php?pic=11jag49&s=9#.XRujROtKiUk
Файл сохраняется на сервере, но недоступен для чтения. Надеюсь, мне удастся получить файл на сервере так же, как он загружен.
if(request_param.method == "POST")
{
var qs = require('querystring');
var body = '';
request_param.on('data', function(data)
{
body += data; //gets incoming data on buffer
});
request_param.on('end', function()
{
var util = require('util');
var postvars_array = qs.parse(body);
var boundary = body.substring(0, 40); //gets the boundary
var line_separator = "\r\n";
var array_post_fields = body.split(boundary);
var array_post_field;
var field_header_array;
var file_content;
var file_name;
var file_name_arr;
var file_ext;
var file_ext_arr;
for(f = 1; f < array_post_fields.length; f++) //parses the string from multipart form
{
array_post_field = array_post_fields[f].split(line_separator);
field_header_array = array_post_field[1].split(";");
if(field_header_array.length > 2)
{
file_name = field_header_array[2]; //gets filename
file_name_arr = file_name.split("=");
file_name = file_name_arr[1];
file_name = file_name.replace('"', '');
file_name = file_name.replace('"', '');
file_content = array_post_field[4]; //gets file contents
}
}
cont += '<br/><br/>';
cont += '<br/><br/>';
cont += file_name + '<br/><br/>' + file_content; //prints file contents, lots of diamonds (question signs)
file_ext_arr = file_name.split(".");
file_ext = file_ext_arr[file_ext_arr.length - 1];
if(file_name != "")
{
const fs = require('fs');
fs.writeFile("./shared/"+file_formats[file_ext]+"/"+file_name, file_content, function(err) //writes on disk (file gets saved but its unreadable)
{
if(err)
return console.log(err);
var fs = require('fs');
fs.readFile("./media/text/template.html", 'utf8', function(err, contents)
{
if(err)
console.log(err);
cont = contents.replace("<hydra-html-content>", cont);
cont = cont.replace("<hydra-module-name>", "Archivos");
cont = cont.replace("<hydra-title-page>", ".:Hydra / Archivos:.");
response_param.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
response_param.write(cont);
response_param.end();
});
});
}
else
{
var fs = require('fs');
fs.readFile("./media/text/template.html", 'utf8', function(err, contents)
{
if(err)
console.log(err);
cont = contents.replace("<hydra-html-content>", cont);
cont = cont.replace("<hydra-module-name>", "Archivos");
cont = cont.replace("<hydra-title-page>", ".:Hydra / Archivos:.");
response_param.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
response_param.write(cont);
response_param.end();
});
}
});
}