Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отсылка файла через Web форму, Файл приходит битым  
:(
    Опции темы
cmlwt
Дата 22.6.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 22.6.2008

Репутация: нет
Всего: нет



Приветствую  Люди помоги пожалуйста  Вот  такая вот  проблема:

Код

       FILE *f = fopen( "C:\\155552.jpg", "wb" );
       if ( f != NULL )
       {
           
           fwrite( content1, file_size, 1, f );  // на это  не обращайте внимания я тут  проверял   нормально  ли считался  файл в content1
           fclose( f );
   

    int len = strlen(content) + file_size + strlen("\r\n--AaB03x\r\n");

    sprintf(tmp, "Content-Length: %d\r\n", len);

    strcat(sendreq, tmp); // шапка полностью
    strcat(sendreq, content); // подшапка
    //strcat(sendreq, content1); // файл

    memcpy( sendreq + strlen(sendreq) ,  content1    , sizeof (content1));

    memcpy( sendreq + strlen(sendreq) ,  "\r\n--AaB03x\r\n", strlen("\r\n--AaB03x\r\n"));
    
    
    //MessageBox (0, sendreq,0,0);
    send(sock, sendreq, sizeof(sendreq), 0);


Проблема заключается в том что  В content1  файл  нормально приходит  (не битый Т.к.  копия полностью  рабочаясоздается)  А вот  на сервер  файл  приходит  битым (содержит  только  первые 4 байта)  Запрос  с txt работает на ура А вот  с бинарниками не хочет работать Подскажите в чем проблема И как ее можно решить
PM MAIL   Вверх
jonie
Дата 22.6.2008, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



Цитата

Код

 memcpy( sendreq + strlen(sendreq) ,  "\r\n--AaB03x\r\n", strlen("\r\n--AaB03x\r\n"));

неверно. strlen тут не даст нормального результата в случае бинарника...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
cmlwt
Дата 23.6.2008, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 22.6.2008

Репутация: нет
Всего: нет



Цитата(jonie @ 22.6.2008,  22:04)
Цитата

Код

 memcpy( sendreq + strlen(sendreq) ,  "\r\n--AaB03x\r\n", strlen("\r\n--AaB03x\r\n"));

неверно. strlen тут не даст нормального результата в случае бинарника...

Вот оно что  спасиб  переделал  вот так вот 
Код

int cc = 0;
strcat(sendreq, tmp); // шапка полностью
    strcat(sendreq, content); // подшапка
    
    memcpy( sendreq + strlen(sendreq) ,  content1, sizeof (content1));
        cc = strlen(sendreq) + file_size;

    memcpy( sendreq + cc ,  "\r\n--AaB03x\r\n", strlen("\r\n--AaB03x\r\n"));
    
    
    //MessageBox (0, sendreq,0,0);
    send(sock, sendreq, sizeof(sendreq), 0);





Все теперь файл приходит байт в байт как нужно  на сервер (размер  совподает  но битый) Косяк состоит в том что  последняя строчка

Код

memcpy( sendreq + cc ,  "\r\n--AaB03x\r\n", strlen("\r\n--AaB03x\r\n"));


Не входит в POST запрос  в чем проблема не могу сообразить ПОдскажите 


P.S. Все  исправил   нужно было  везде  убрать sizeof   и переделать строчки 

Код

  memcpy( sendreq + strlen(sendreq) ,  content1, sizeof (content1));

в
    memcpy( sendreq + strlen(sendreq) ,  content1, file_size); // где   file_size это  размер нашего бинарника  который мы считали
и

    send(sock, sendreq, sizeof(sendreq), 0);
в
    cc = cc +  strlen("\r\n--AaB03x\r\n");
    send(sock, sendreq, сс , 0);



И все работает  на ура ))  Кому  интересно  посмотреть  полностью ф-цию Смотрим тут 

Это сообщение отредактировал(а) cmlwt - 23.6.2008, 17:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.