Я получаю некоторый файл из каких-то ссылок (в основном на якоре HREF) с помощью Ajax, то я посылаю содержимое в узел сервера следующим образом:fs.writeFile не возвращает PDF-файл, как это содержание
<a class="myTag" href="/getFiledata?uid=7674&&pass=75876789">Download</a>
.
jQuery.get(jQuery("a.myTag").attr("href"), function(data, status){
console.log("typeof data: ",typeof data);
jQuery.ajax({
url : 'https://7c099919.ngrok.io/fildta?fileTyp=naukriDta',
type : 'POST',
contentType: 'application/json',
dataType: 'json',
data : JSON.stringify({bdy:data}),
arrayKey:'',
processData: false, // tell jQuery not to process the data
success : function(data) {
console.log(data);
}
});
console.log("Data: ",data);
});
Я слушаю и записи данных на сервере следующим образом:
function(req, res, next){
var fd=path.join(__dirname,"../upld/tmp.pdf");
console.log("req body: ",JSON.stringify(req.body));
fs.writeFile(fd, req.body.bdy, function(err) {
if (err){
console.log(fd,"\n\n\n\n\n Can not write to above file:\n\n",err);
}else {
console.log(fd,' is Done');
}
});
console.log("req query: ",req.query);
res.send({"msg":"File is uploaded"});
}
, но когда я прочитал созданный файл в формате PDF с помощью любого читателя он показывает пустым, но когда я прочитал его содержимое с помощью блокнота ++ содержания так же, как и на клиенте.
содержание файла выглядит следующим образом:
Data: %PDF-1.5
%����
24 0 obj
<<
/Linearized 1
/L 121184
/H [ 1971 370 ]
/O 26
/E 98912
/N 4
/T 120577
>>
endobj
xref
24 70
0000000017 00000 n
0000001869 00000 n
0000002341 00000 n
0000002744 00000 n
0000002924 00000 n
0000003187 00000 n
0000003532 00000 n
0000003720 00000 n
0000003999 00000 n
0000008165 00000 n
0000008222 00000 n
0000008397 00000 n
0000008655 00000 n
0000008884 00000 n
0000009034 00000 n
0000009064 00000 n
0000009246 00000 n
0000009328 00000 n
0000009601 00000 n
0000018049 00000 n
0000018198 00000 n
0000018570 00000 n
0000018753 00000 n
0000019026 00000 n
0000025387 00000 n
0000025414 00000 n
0000025569 00000 n
0000025599 00000 n
0000025786 00000 n
0000026064 00000 n
0000036489 00000 n
0000036867 00000 n
0000037320 00000 n
0000037509 00000 n
0000037787 00000 n
0000045277 00000 n
0000045492 00000 n
0000045642 00000 n
0000045672 00000 n
0000045854 00000 n
0000046128 00000 n
0000061832 00000 n
0000062215 00000 n
0000062645 00000 n
0000062828 00000 n
0000063102 00000 n
0000069388 00000 n
0000069443 00000 n
0000069592 00000 n
0000069622 00000 n
0000069803 00000 n
0000070073 00000 n
0000073366 00000 n
0000073411 00000 n
0000073718 00000 n
0000073873 00000 n
0000073903 00000 n
0000074090 00000 n
0000074369 00000 n
0000083843 00000 n
0000084123 00000 n
0000084551 00000 n
0000084699 00000 n
0000084729 00000 n
0000084909 00000 n
0000085193 00000 n
0000093386 00000 n
0000093570 00000 n
0000093941 00000 n
0000001971 00000 n
trailer
<<
/Size 94
/Prev 120566
/Info 23 0 R
/Root 25 0 R
/ID [<4e891be7c450bedc9528eba318fe1823><4e891be7c450bedc9528eba318fe1823>]
>>
startxref
0
%%EOF
25 0 obj
<<
/Type /Catalog
/Pages 22 0 R
/Lang (en-IN)
/MarkInfo << /Marked true >>
>>
endobj
93 0 obj
<<
/S 188
/Filter /FlateDecode
/Length 280
>>
stream
x�c```b``������*� Ȁ
я наивная в MIME-TYPE и файл концепции контента. Я думаю, что где-то я не могу установить определенные данные (MIME-TYPE, content-type и т. Д.) Перед записью файла.
В принципе, моя цель - перенаправить файл, полученный от якоря, на мой сервер узлов.
Разве не имело бы смысла посылать URL-адрес на сервер и позволить серверу загружать файл, вместо этого загружая и повторно загружая его? – Tomalak
На странице используются некоторые файлы cookie, референт и т. Д. Перед отправкой файла, поэтому он блокируется, если запрос отправляется с сервера. –
Попробуйте использовать [XMLHttpRequest2] (https://www.html5rocks.com/en/tutorials/file/xhr2/) для загрузите файл как [Blob] (https://developer.mozilla.org/en/docs/Web/API/Blob) (большинство браузеров [support xhr2] (http://caniuse.com/#feat=xhr2) В наше время). Когда у вас есть blob, вы можете легко загрузить и без каких-либо проблем с кодировкой символов. – Tomalak