размещение здесь, потому что я не получил ответа на форумах Dropbox. dropbox forum postDropbox Chooser возвращает поврежденный файл
Несколько месяцев назад я внедрил выборщик и решил, что все работает нормально. Затем около недели назад я столкнулся с проблемой, в которой будут открываться файлы .pdf, но содержат пустые страницы, а файлы .docx вообще не будут открываться (файлы с расширением .rtf и .txt просто прекрасны)
В любом случае я начал копать и получается, что возвращаемый xhr.responseText короткий число байтов (приблизительно 4% в pdf-файлах)
Я взглянул на байты, и начало и конец файла верны (различные версии имеют один и тот же вопрос):
% PDF-1.5
...
%% EOF
Вот соответствующий код:
var options = {
success: function(files)
{
var xhr = new XMLHttpRequest();
xhr.open("GET", files[0].link, false);
xhr.responseType = 'arrayBuffer';
xhr.onreadystatechange = function(oEvent)
{
if (xhr.readyState === 4 && xhr.status === 200)
{
var buffer = xhr.responseText;
console.log('File size: ' + files[0].bytes +
' | Buffer size: ' + buffer.length +
' | Header size: ' + xhr.getResponseHeader('Content-Length'));
}
}
xhr.setRequestHeader("User-Agent", navigator.userAgent);
try
{
xhr.send(null);
}
catch (err)
{
alert(err);
}
},
linkType: "direct", // or "preview"
multiselect: false, // or true
};
Dropbox.choose(options);
В консоли «размер файла» и «размер заголовка» значения одинаковы, но «Размер буфера», то responseText, он меньше ...
Почему dropbox возвращает все содержимое файла?
На стороне форума Dropbox, в следующий раз попробуйте опубликовать в разделе «Разработка API». Я переехал туда. https://www.dropboxforum.com/hc/en-us/community/posts/204965035-Dropbox-Chooser-return-size-differs-from-responseText – smarx