EDIT: Вся проблема оказалась сетевой проблемой, но если вы видите какие-либо идеи о том, как я мог бы оптимизировать процесс, я бы все равно ее оценил.Отправка blob в сервлет через ajax
Я довольно новичок в сервлетах и недалеко от поездки. Я столкнулся с проблемой, связанной с производительностью. Я пытаюсь отправить видеофайл через объект XHR в браузере Google Chrome. Видеофайл хранится в объекте Blob. Я использую эту функцию в моем JavaScript сценарии:
function upload(blob) {
var xhr = new XMLHttpRequest();
xhr.open('POST', '/Test/Odbieracz', true);
xhr.onload = function(e) { console.log("loaded"); };
xhr.onreadystatechange = function(){
console.log("state: " + xhr.readyState);
};
// Listen to the upload progress.
xhr.upload.onprogress = function(e) { console.log("uploading..."); };
xhr.setRequestHeader("Content-Type", "video/webm");
xhr.send(blob);
}
Это хорошо работает, потому что Blob достигает Servlet, где я использую этот кусок кода для его обработки:
byte[] buffer = new byte[16 * 1024];
InputStream input = request.getInputStream();
OutputStream output = new FileOutputStream("costam0.webm");
int bytesRead;
while ((bytesRead = input.read(buffer)) != -1){
System.out.println(bytesRead);
output.write(buffer, 0, bytesRead);
}
output.close();
input.close();
Это сохраняет файл, а также ,
Проблема, которая возникает у меня, заключается в том, что она очень медленная, согласно моим расчетам, она может обрабатывать около 42 кБ/с, что для веб-службы, связанной с видеофайлами, чрезвычайно медленное. Я часами сижу здесь, пытаясь найти способ ускорить его, или, по крайней мере, найти узкое место, но, к сожалению, я понятия не имею, где это может быть.
Мое подозрение, что браузер вызывает задержку, я использовал другой InputStream в своем сервлете, который ведет к локальному файлу (тот же, который я пытаюсь загрузить через XHR), и у него не было проблемы с его обработкой все, заняло меньше секунды. Сервер размещен на моем локальном хосте, поэтому я не думаю, что сеть слишком сильно меня задерживает.
Если у кого-то была эта проблема раньше, я был бы благодарен за любые указатели.
Большое вам спасибо за ваш ответ, но в конце концов это оказалось проблемой для сети - я перезапустил модем, и все хорошо. Я буду использовать ваши советы, но для повышения эффективности. То, как я рассчитывал скорость, было с отметками времени в начале и в конце запросов, я в основном разделял размер файла на количество прошедших секунд. – STT