Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > передать тело файла из indexDb


Автор: cppGhost 25.7.2014, 15:56
Доброго времени суток, проблема такая, буду рад любой помощи или наводке. Есть страничка, которая может загружать в себя файлы. Грузятся они в IndexDb и сами файлы хранятся как переменная типа ArrayBuffer. Эту часть делает некий программист, с которым, в принципе, я могу навести контакт. Теперь мне нужно эти файлы по нажатию на кнопку, например, отправлять на некий сервер (сервер на с++, исходники у меня есть). Проблема в том, что сначала попытался сделать так
Код

$.post(serverPath + "/do_action",    {    action: "upload_file", 
file_name: documents[i].fileName,
blob: "^" + documents[i].file    // это и есть переменная типа ArrayBuffer
}, function(data) 
{
    ..................................
})

но мне не приходят сами данные, а приходит строка вида "[array buffer]". Я пытался переводить это в строку, но тут как то много подводных камней с разрядностью и переводом обратно на стороне сервера. Может есть какой то другой способ передать данные файла?

Автор: cppGhost 29.7.2014, 15:51
Решение все же нашел. Кому-то правда покажется, "а почему бы сразу так не сделать", но вот так голова, значит, варит. Сначала пробовал содержимое ArrayBuffer переводить в символы, а потом на стороне сервера переводить обратно, но было много геморра. особенно с тем, что браузер сам перекодировал большую часть символов в юникод с использованием %. 

Поэтому каждый символ ArrayBuffer я перевел в шестнадцетеричный вид. Получилась строка, которую я на стороне сервера перевел обратно в char. Вот и все, тело файла передано.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)