как base64 кодировать файл документа

Я работаю над проектом php, в котором мне нужно отправить документ с кодировкой base64 на сервер с помощью CURL. Вот код: $c = file_get_contents(test.doc); $encoded = base64_encode($c);

Я обнаружил, что полученный $encoded недействителен.

На этом веб-сайте: https://www.base64encode.org/ я загрузил файл и кодировку base64 онлайн, результирующая закодированная строка верна.

Затем я попытался вырезать и вставить текст из файла документа и закодировать их онлайн на указанном выше веб-сайте, результирующая строка отличается от действительной строки, которую я получил. Поэтому, я думаю, я не мог просто извлечь текст из doc-файла и закодировать его в base64.


person user3109149    schedule 22.08.2017    source источник


Ответы (1)


попробуй это-

$c =  file_get_contents("test.doc");
file_put_contents('temp.txt',$c);
$cc = file_get_contents('temp.txt');
if(strlen($cc)=='0'){
$cc = fopen("temp.txt","r");}
$encoded = base64_encode($cc);
unlink('temp.txt');
person Devanshu Goyal    schedule 22.08.2017
comment
Это опечатка if(strlen($cc=='0')), должно ли быть if(strlen($cc) != 0)? - person user3109149; 22.08.2017
comment
Извините, он частично работал. Первоначально я тестировал очень простой файл doc hello world, и это сработало! Но я попробовал более сложный документ с приведенным выше кодом, я получил следующие ошибки на стороне сервера: Неверная длина для массива или строки символов Base-64. Источник: mscorlib в System.Convert.FromBase64_Decode(Char* startInputPtr, Int32 inputLength, Byte* startDestPtr, Int32 destLength) в System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) - person user3109149; 24.08.2017