С Новым годом! Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 11
1

CURL - Загрузка файла на сервер

21.11.2016, 04:52. Показов 1440. Ответов 0
Метки curl, url (Все метки)

Author24 — интернет-сервис помощи студентам
Есть следующая функция, призванная отправлять файл 333.txt на Яндекс диск

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int upload(link){
    unsigned char * D;
    int arr,R = 0;
    CURL *curl;
    CURLcode res;
    curl = curl_easy_init();
    FILE * F = fopen("333.txt","rb");
    fseek(F,0,SEEK_END);
    long size = ftell(F)+1;
    fseek(F,0,SEEK_SET);
    D = (unsigned char*)malloc(size*sizeof(unsigned char));
    while ( ( arr = fread(D+R, 1, BUF_BLOK, F) ) > 0 ){R+=arr;}
    *(D+R+1)='\0';
    fclose(F);
 
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, link);
        curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, D);
        res = curl_easy_perform(curl);
        if(res != CURLE_OK)
          printf("curl_easy_perform() failed: %s\n",curl_easy_strerror(res));
        else{
          printf("%s",ToRus("Все оК"));
        }
        curl_easy_cleanup(curl);
    }
    free(D);
    return 0;
}
Она работает как надо, но только с текстовыми файлами. Проблемы происходят при передачи картинок, аудио и видео файлов - передается лишь малая часть, а если быть точнее только первые несколько байт. Знаю что следует копать в сторону кодировки символов массива D.

Однако, имеется схожий код, но только на php:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    $file = '222.jpg';
    $link = (require 'keepupurl.php');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $link);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($file));
    $answer = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);
    if ($info['http_code'] != '201') {echo 'Error';}
    else {echo 'OK';}
Так вот он работает со всеми типами файлов. Я стал смотреть на кодировку символов получаемых в file_get_contents($file) и
увидел полную идентичность с символами из fread().

Долгие поиски решения проблемы ни к чему (хорошему) не привили. Возможно ли, что проблема состоит в версии курл библиотеки?

Добавлено через 38 минут
Ёксель моксель! Проблема решена добавлением в код строчки, указывающей размер передаваемых данных.
C
1
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE , R);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2016, 04:52
Ответы с готовыми решениями:

Загрузка картинки на сервер через curl
Я успешно получил url сервера для загрузки(photos.getWallUploadServer). Далее пытаюсь отправить...

Загрузка файла через curl, а вместо файла страница с кроказабярами
Скачиваю файл через curl, а вместо него вылазает страница с крокозябрами HTTP/1.1 100 Continue...

Загрузка файла в curl
Делаю загрузку картинок на хостинг через сайт, после запрос возвращает xml где указано что файл не...

загрузка файла на сервер с вашего сайта на чужой сервер под вашим логином!
Извените зараннее если ошибся разделом, не нашел куда можно отнести данную тему и посчитал как...

0
21.11.2016, 04:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2016, 04:52
Помогаю со студенческими работами здесь

Загрузка файла на сервер
Что не так? В папку LoadingFile ничего не загружается. @using Microsoft.Web.Helpers; @{ ...

Загрузка файла на сервер
Привет всем. Подскажите, пожалуйста решение. Скрипт загрузки файла на сервер, рабочий: ...

Загрузка файла на сервер
Народ я в php вобще новичок, создал сервер http://nfots.zz.mu/ и пробую загрузить туда файл с...

Загрузка файла на сервер
Всем привет. Вот хочу сделать чтоб можно было загружать совершенно любой тип файлов на сервер и...

Загрузка файла на сервер
Помогите пожалуйста, как загрузить файл на сервер по ftp

Загрузка файла на сервер
foreach ($_FILES as $key => $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru