С сервлета на клиент необходимо отправить торрент-файл. В JS не силён. По примерам в интернете скопипастил такой код.
function downloadFile() {
var data;
var xmlHttp = getXHR();
var date = new Date();
date = Date.parse(date);
xmlHttp.open("GET", "/index?request=dld&sessid=" + date, false);
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
data = this.response;
saveData(data, fileName); //код получения fileName опускаю
}
}
};
xmlHttp.send(null);
}
function getXHR() {
var xmlHttp;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
} catch (E) {
xmlHttp = false;
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
return xmlHttp;
}
var saveData = (function () {
debugger;
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
return function (data, fileName) {
var blob = new Blob([data], {type: "octet/stream"}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
}());
код сервлета:
String path = "--any path--";
OutputStream outputStream = response.getOutputStream();
FileInputStream inputStream = new FileInputStream(path);
while(inputStream.available() > 0){
outputStream.write(inputStream.read());
}
inputStream.close();
outputStream.close();
Файл сохраняется ломаный. Если просто открыть в текстовом или hex редакторе, то начало файла, где перечисляются трекеры, сходится с исходным, а дальше, где бинарная информация, идет явное отличие.
Решено
Несмотря на то, что минусуют, я всё же отвечу. Вдруг, кому поможет. Для объекта XMLHttpRequest необходимо указать тип принимаемых данных. В моём случае
xmlHttp.responseType = "arraybuffer";
Данная настройка работает только с асинхронным запросом. По умолчанию xmlHttp.responseType = "" (DOMString), что и приводит к изменению данных.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Мне нужно изменить обе строки в html, но с помощью innerHTML получается изменить лишь одну строку (ту, где единица написана)