Загрузка в DropBOX с использованием API, который принимает только UTF - PullRequest
1 голос
/ 16 марта 2012

Пожалуйста, помогите мне, я создаю PDF-файл в потоке памяти и хочу передать этот поток как строку utf в API-интерфейс dropbox. Вызовите вызов. Я использую spring.social для связи с Dropbox.

            MemoryStream ms = new MemoryStream();
            Document document = new Document(PageSize.A4);
            PdfWriter writer = PdfWriter.GetInstance(document, ms);
            iTextSharp.text.Image img = text.Image.GetInstance(CurrRecipt.imgurl);
            writer.CloseStream = false;
            document.Open();
            document.Add(img);
            document.Close();

когда я конвертирую поток в строку, используя Encoding.GetString или Utf8.convert, PDF не читается. Я не могу передать это как массив byte [], так как мой Spring Spring Framework не может преобразовать это в тело запроса Http.

Такое же поведение наблюдается, когда я читаю PDF с диска в поток, преобразую этот поток в строку и записываю в новый файл PDF.

1 Ответ

0 голосов
/ 16 марта 2012

Методы System.Text.Encoding.GetBytes предназначены для преобразования реализации .Net строк в необработанные байтовые массивы в определенном формате. PDF - это двоичные файлы, поэтому использование строкового преобразователя не имеет смысла.

Когда Dropbox говорит это:

Каждая строка, передаваемая в Dropbox API и обратно, должна иметь кодировку UTF-8

Они говорят о самих командах, которые вы посылаете, а не о данных. Пока вы придерживаетесь базовых младших 128 символов ASCII (английские буквы, цифры, знаки препинания и т. Д.), Вам, как правило, даже не нужно беспокоиться об этом, поскольку они отображаются один на один с Unicode и представлены одинаково используя UTF-8.

...