Скачивание файла через байты (PHP + C#)

Участник
Статус
Оффлайн
Регистрация
20 Фев 2017
Сообщения
1,215
Реакции[?]
275
Поинты[?]
0
Добрый день, нужно реализовать скачивание файла, путем передачи байтов через скрипт на хосте в программу, и дальше сохранить его.

На хосте создал скрипт get.php,
На просторах всемирной паутины нашел кусок кода, который равносилен
File.ReadAllByte() в C#

Добавил проверку и вышло это :
Код:
<?php

if ($_POST['filename'] != null)
{
    $file = fopen($_POST['filename'],"r");
    while (! feof ($file))
    echo fgetc($file);
    fclose($file);
}

?>
После получаю эти байты в строку уже в C#, с помощью запроса
Пытаюсь сохранить, но увы после всех этих действий файл весит на пару КБ больше, и не запускается.



Кто-то знает в чем проблема, или знает другие пути реализации, прошу помочь :sleepy:
 
Участник
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
612
Реакции[?]
507
Поинты[?]
0
$file = fopen($_POST['filename'],"r");
Замени режим read на readbytes: (..., "rb")
Да и тут проще вывести через file_get_contents, а потом сделать вот это:
Код:
File.WriteAllBytes("1.exe", Convert.ToBytes(new WebClient().DownloadString("ссылка"))); // мог не правильно написать названия функций, но думаю суть понятна
 
Эксперт
Статус
Оффлайн
Регистрация
31 Мар 2017
Сообщения
997
Реакции[?]
652
Поинты[?]
0
Добрый день, нужно реализовать скачивание файла, путем передачи байтов через скрипт на хосте в программу, и дальше сохранить его.

На хосте создал скрипт get.php,
На просторах всемирной паутины нашел кусок кода, который равносилен
File.ReadAllByte() в C#

Добавил проверку и вышло это :
Код:
<?php

if ($_POST['filename'] != null)
{
    $file = fopen($_POST['filename'],"r");
    while (! feof ($file))
    echo fgetc($file);
    fclose($file);
}

?>
После получаю эти байты в строку уже в C#, с помощью запроса
Пытаюсь сохранить, но увы после всех этих действий файл весит на пару КБ больше, и не запускается.



Кто-то знает в чем проблема, или знает другие пути реализации, прошу помочь :sleepy:
Покажи что у тебя получается
Скрин пж

Ну а вообще,
Код:
print_r(file_get_contents('1.exe'));
И парси это.
Вроде как всё.
Ни больше ни меньше.
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
12 Июн 2014
Сообщения
991
Реакции[?]
1,209
Поинты[?]
3K
Код:
<?php

$FILE = file_get_contents("Module.dll");
Exit( bin2hex($FILE));

?>
при получении ответа(POST\GET) конвертируешь обратно:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Сохраняешь в файл данные
PROFIT!!!



Код:
using (FileStream fs = File.Create("yuo.dll", 1024, FileOptions.None)) {
    BinaryFormatter formatter = new BinaryFormatter();
    string s = hex2bin(ответ_из_твоего_запроса);
    formatter.Serialize(fs, Encoding.Unicode.GetBytes(s));
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
31 Мар 2017
Сообщения
997
Реакции[?]
652
Поинты[?]
0
Код:
<?php

$FILE = file_get_contents("Module.dll");
Exit( bin2hex($FILE));

?>
при получении ответа(POST\GET) конвертируешь обратно:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Сохраняешь в файл данные
PROFIT!!!



Код:
using (FileStream fs = File.Create("yuo.dll", 1024, FileOptions.None)) {
    BinaryFormatter formatter = new BinaryFormatter();
    string s = hex2bin(ответ_из_твоего_запроса);
    formatter.Serialize(fs, Encoding.Unicode.GetBytes(s));
Спасибо большое, не знал про функцию bin2hex , использовал онли файл гет контенс
 
Эксперт
Статус
Оффлайн
Регистрация
12 Июн 2014
Сообщения
991
Реакции[?]
1,209
Поинты[?]
3K
онли файл гет контенс
тоже поначалу использовал голую file_get_contents, но как потом оказалось при передаче данные могут "терятся", а если использовать для передачи base64, то вообще могут "терятся" блоки.... и все из-за различия кодировок строки.
 
Сверху Снизу