У меня есть следующий скрипт, который успешно работает до тех пор, пока не будет загружен последний фрагмент файла, где он терпит неудачу (срабатывает блок кода ошибки). Я не могу понять, почему.
function startUpload(fileElementId, blockLength, uploadProgressElement) {
var start = 0;
var end = blockLength;
var incrimentalIdentifier = 1;
var totalNumberOfBlocks = 0;
var file = document.getElementById(fileElementId).files[0];
var progressBar = document.getElementById(uploadProgressElement);
if (file.size <= 0) {
alert('Please select a file!');
return;
}
do {
if (end > file.size - 1) {
end = file.size - 1;
}
if ((file.size % blockLength) == 0) {
totalNumberOfBlocks = parseInt(file.size / blockLength);
}
else {
totalNumberOfBlocks = parseInt(file.size / blockLength) + 1;
}
var reader = new FileReader();
reader.onloadend = function (evt) {
if (evt.target.readyState == FileReader.DONE) {
$.ajax({
type: "POST",
url: "/Home/UploadBlock",
data: { "identifier": incrimentalIdentifier, "fileName": file.name, "payload": evt.target.result },
dataType: "json",
success: function () {
progressBar.value = Math.round((incrimentalIdentifier / totalNumberOfBlocks) * 100);
},
error: function () {
alert('failure');
}
});
}
};
var payload = file.webkitSlice(start, end);
reader.readAsText(payload, 'UTF-8');
start = end + 1;
incrimentalIdentifier += 1;
end = start + blockLength - 1;
} while (end < file.size - 1);
}
Я пока ничего не делаю в своих действиях, но скоро добавлю тело. На данный момент акция:
public ActionResult UploadBlock(int identifier, string fileName, string payload)
{
return null;
}