Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> API Малый бизнес фотохостинг , Пытаюсь выгрузить фото и получить в ответ ссылку на него          
cotllette Подменю пользователя
сообщение 27.05.21, 11:09
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Помогите, плизочки, чайнику разобраться с АПИ . Нашла фотохостинг с АПИ [необходимо зарегистрироваться для просмотра ссылки] [необходимо зарегистрироваться для просмотра ссылки]
Пытаюсь выгрузить фото и получить в ответ ссылку на него. Танцую с бубном уже 2 дня..

    АдресФайла = КартинкаТовара.ПолныйПуть;
    СтрокаДляОтправки = "<form target=""ipic.su/api/index.php"" action=""loadimg"" method=""post"" enctype=""multipart/form-data"">
    |<a href=""http://ipic.su"">ipic.su/api/index.php</a>
    |<input name=""action"" value=""loadimg"" type=""hidden""/>
    |<input name=""quality"" value=""85"" type=""hidden""/>
    |<input type=""file"" name=""image"" image=" + АдресФайла + "/>
        |</form>";
        
        
    //////Запись = Новый Структура;
    //////Запись.Вставить("quality", "85");
    //////Запись.Вставить("image", КартинкаТовара.ПолныйПуть);
    //////
    //////
    //////ЗаписьJSON = Новый ЗаписьJSON;
    //////ЗаписьJSON.УстановитьСтроку();  
    //////    
    //////ЗаписатьJSON(ЗаписьJSON, Запись);
    //////ДанныеДляТела = ЗаписьJSON.Закрыть();
    
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();  
        
    ЗаписатьJSON(ЗаписьJSON, СтрокаДляОтправки);
    ДанныеДляТела = ЗаписьJSON.Закрыть();

    //
        ЗаголовокЗапросАвт = Новый Соответствие();
    ЗаголовокЗапросАвт.Вставить("Content-Type", "text/javascript");
    ЗаголовокЗапросАвт.Вставить("src", "http://ipic.su/javascript/functions.js");
    ЗаголовокЗапросАвт.Вставить("language", "javascript");
    
    //ЗаголовокЗапросАвт.Вставить("enctype", "multipart/form-data");
    //ЗаголовокЗапросАвт.Вставить("target", "http://ipic.su/index.php");
    //ЗаголовокЗапросАвт.Вставить("action", "loadimg");
    //ЗаголовокЗапросАвт.Вставить("method", "post");


    ЗапросАвт = Новый HTTPЗапрос("/api/index.php",ЗаголовокЗапросАвт);
    ЗапросАвт.УстановитьТелоИзСтроки(ДанныеДляТела);

    ОтветHTTP = HTTPСоединение.ВызватьHTTPМетод("POST", ЗапросАвт);


В ответе по идее должно появиться имя файла и код 200, или ошибка.
у меня в ответе код 200 есть, но вместо имя файла : заголовки - соответствие

и в 1м и в закомментированном случае


Я рукожоп или апи не работает?



logist Подменю пользователя
сообщение 27.05.21, 11:51
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2527 раз
Рейтинг: 1589.4

Похоже на рукожоп, забудьте это всё, и напишите с нуля. Сейчас ваш код отправляет на сервер просто текст указанный в СтрокаДляОтправки

upd: вообще посмотрите на более простой и понятный сервис [необходимо зарегистрироваться для просмотра ссылки]

Сообщение отредактировал logist - 27.05.21, 12:01


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: cotllette,

logist Подменю пользователя
сообщение 29.05.21, 0:34
Сообщение #3

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2527 раз
Рейтинг: 1589.4

Как-то так, код не тестировался и писался на коленке, думаю достаточный для понимания
function UploadImgToServer(LocalPath, Expiration = 0)
    // Imgbb's API (https://api.imgbb.com/)
    // LocalPath - Path to img on yr PC
    // Expiration - Enable this if you want to force uploads to be auto deleted after certain time (in seconds 60-15552000)    
    Try
        Coonection = New HTTPConnection("api.imgbb.com",443,,,,True);
    Except
        Return "";
    EndTry;    
    Key            = ""; // Imgbb's API key
    ImgFile        = New File(LocalPath);
    TmpFile        = GetTempFileName();
    FileContent    = Base64String(New BinaryData(LocalPath));    
    ImgStram = New TextWriter(TmpFile, TextEncoding.UTF8, Chars.LF, False);
    ImgStram.WriteLine("Content-Disposition: form-data; name=""image""");
    ImgStram.WriteLine(FileContent);    
    Headers = New Map;
    Headers.Insert("Content-Type", "multipart/form-data;");    
    Request = New HTTPRequest;
    Request.Headers = Headers;
    Request.ResourceAddress = "/upload?key="+Key;
    If Expiration > 0 Then
        Request.ResourceAddress = Request.ResourceAddress + "&expiration="+Format(Expiration,"NG=0");
    Endif;
    Request.SetBodyFileName(TmpFile);    
    Response = Coonection.Post(Request);
    If Not Response = Undefined Then
        JsonResponse = Response.GetBodyAsString();
        Try
            JSON = New JSONReader;
            JSON.SetString(JsonResponse);
            Result = ReadJSON(JSON, True);
            Return Result["data"]["url"];
            // If need delete url:
            //Return Result["delete_url"];
        Except
        EndTry;
    EndIf;
    // Any unsuccessful response
    Return "";    
EndFunction


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.09.21, 13:25
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!