Спасибо всем за вашу поддержку еще раз. Я создал приложение: Клиент: HTML, CSS, Javascript Сервер: Node.js, Javascript
Я использую AJAX для передачи и получения данных. Все работало нормально, пока я не попытался передать файл. Я не хотел использовать Formidable или Multer. Я сохранил файл в виде строки в JSON и передал на сервер следующим образом:
function UploadFile() {
var files = document.getElementById("fileopen").files;
var file = files[0];
if(files && file) {
var reader = new FileReader();
reader.onload = function(readerEvt) {
var objJSON = {
"filestr": encodeURIComponent(readerEvt.target.result),
"filename": file.name
}
var strJSON = JSON.stringify(objJSON);
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("post", "../../SaveFile", true);
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState === XMLHttpRequest.DONE && xmlhttp.status === 200) {
}
}
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send("strJSON=" + strJSON);
};
reader.readAsText(file);
}
}
На стороне сервера выглядит следующее:
app.post('/SaveFile', function(req, res) {console.log(req.body.strJSON);
var strJSON = req.body.strJSON;
var objJSON = JSON.parse(strJSON);console.log(objJSON);
fs.writeFile(objJSON.filename, decodeURIComponent(objJSON.filestr), function (err) {
if (err)
throw err;
else {
res.status(200);
return res.send(objJSON.filestr);
}
});
});
Файл представляет собой простой текст файл со следующим содержимым (во время выполнения это может быть любой файл (img, do c, xls, et c)):
Строка 1 Строка 2 Строка 3 & Строка 4 Строка 5 Строка 6 ü ü üÆ 101
Я использую encodeURIComponent для обработки '&', и кажется, что он работает нормально. Я получаю эту ошибку на стороне сервера. Вот вывод консоли:
{"filestr": "Строка 1 Строка 2 Строка 3 & Строка 4 Строка 5 Строка 6 ü ü ÆÆ Æ", "filename": "Rings.txt"} в JSON в позиции 20 токена в JSON .parse () в E: \ Company \ Sites \ Customers \ AMS \ server. js: 3153: 21 в Layer.handle [как handle_request] (E: \ Company \ Сайты \ Customers \ AMS \ node_modules \ express \ lib \ router \ layer. js: 95: 5) на следующем (E: \ Company \ Sites \ Customers \ AMS \ node_modules \ express \ lib \ router \ route. js: 137: 13) в Route.dispatch (E: \ Company \ Sites \ Customers \ AMS \ node_modules \ express \ lib \ router \ route. js: 112: 3) в Layer.handle [как handle_request] (E : \ Company \ Sites \ Customers \ AMS \ node_modules \ express \ lib \ router \ layer. js: 95: 5) в E: \ Company \ Sites \ Customers \ AMS \ node_modules \ express \ lib \ router \ index. js: 281: 22 в Function.process_params (E: \ Company \ Sites \ Customers \ AMS \ node_modules \ express \ lib \ router \ index. js: 335: 12) в следующем (E: \ Company \ Sites \ Customers \ AMS \ node_modules \ express \ lib \ router \ index. js: 275: 10) на E: \ Company \ Site s \ Customers \ AMS \ node_modules \ body-parser \ lib \ read. js: 130: 5
Ваша поддержка будет принята с благодарностью, поскольку я застрял в ней в течение последних двух дней. Спасибо.