Проблема с загрузкой изображения POST запросом

Поддержка
  • Всем привет. Появилась необходимость загрузить фотографию пост запросом. Перечитал несколько тем по этому поводу на форуме, но все равно у меня не приходит нужный ответ. Отправляю запрос в таком формате:
    ------WebKitFormBoundary[[RANDOM_STRING]]
    Content-Disposition: form-data; name="image"; filename="sss.jpg"
    Content-Type: image/jpeg

    base64:[[FILE_CONTENT]]
    ------WebKitFormBoundary[[RANDOM_STRING]]--

    Картинку читаю в base64, однако постоянно приходит ответ
    {"type":"internal-error","message":"ru.yandex.commune.a3.action.parameter.IllegalParameterException"}
    Подскажите что делаю неправильно.
    Вот такой запрос поймал в фидлере
    Начало запроса:
    a795c0b6-a33b-4bf9-b76f-7887f56c01a6-image.png

    Конец запроса:
    f859b425-bf57-4999-bde7-21af1547c165-image.png

    Пробовал вставлять и в другом виде с значениями в конце запроса:
    ------WebKitFormBoundary[[RANDOM_STRING]]
    Content-Disposition: form-data; name="image"; filename="sss.jpg"
    Content-Type: image/jpeg

    base64:[[FILE_CONTENT]]
    ------WebKitFormBoundary[[RANDOM_STRING]]
    Content-Disposition: form-data; name="crop"

    {"x":0,"y":0,"width":1115,"height":1115,"rotate":0}
    ------WebKitFormBoundary[[RANDOM_STRING]]--
    Однако в таком случае статус ответа становится "-1" и приходит сообщение "Empty reply from server"
    Вот как я читаю изображение:
    17915a27-3707-4433-8a10-2c80fc94c1e8-image.png

    Создаю рандомную строку:
    71c844c2-94e4-4f79-bd53-54a3eb27971b-image.png

    Тело самого запроса:
    e5c3c9cb-4353-4fea-9b4e-73c8d378714a-image.png

  • скинь свой проект

  • BAS не загрузит изображение без загрузки изображения. Base64 в данном случае не имеет смысла, т.к. серверу надо двоичные данные.
    Почитайте ЭТО, может поможет, но, думаю, не на каждом сайте прокатит.

  • @gurkin4
    Читал, но еще раз перечитаю, может что то упустил

  • @gurkin4
    Передавать нужно именно в двоичных данных? А есть ли в BASе функция для перевода изображений в двоичные данные?

  • @gurkin4
    Перечитал, и попробовал его проект с некоторыми исправлениями запустить у себя
    Но ответ такой же "{"type":"internal-error","message":"ru.yandex.commune.a3.action.parameter.IllegalParameterException"}"
    Еще немного не понял про загрузку изображения (

  • попробуйте этот же запрос в конструкторе собрать, не читайте файл в base64

  • @Inwnew
    Попробовал, такой же результат ((

  • @suvorov_jr2 попробуй читать файл сначала вот так

    Screen Shot 2023-03-10 at 15.37.23.png
    и отправляешь как есть без всяких base64:

  • @suvorov_jr2
    Должно быть:

    1. base64:[[FILE_CONTENT]]
    2. multipart/form-data; boundary=----WebKitFormBoundaryТРАТАТА
      в content-type

    Остальное по скринам вроде все верно. Сам проект не смотрел

  • @suvorov_jr2 а может дело в другом? Почитайте про 400 ошибку

    https://ru.hostings.info/schools/400-bad-request.html

  • @Bigma
    Все из вышеперечисленного попробовал, ничего не помогло. Появилась идея, что за загрузку картинки отвечает несколько запросов, потому что загрузка картинки проходит в несколько этапов.

  • @suvorov_jr2 Вот вы серьезно думаете что проблема в картинке ?
    А мне кажется что с дзеном не все так просто, и передаваемые вами данные куда то о чем то, давно устарели.

    И так вы уверены что ссылка должна быть точно такой ?
    и все передаваемые данные опять же верны, и не генерируются при каждом запросе новые.
    X-FP-Token
    X-Csrf-Token
    Session_id
    WebKitFormBoundary[[RANDOM_STRING]] там точно должен быть [[RANDOM_STRING]] или это вы так решили ?

  • @Dodok
    Другой ссылки я не наблюдаю. Значения токенов не меняются. На каждом аккаунте свой токен. Сессион айди входит в куки, но я пробовал загружал куки через HTTP клиент. Про значение WebKit: оно всегда генерируется 16 рандомными символами, а чтобы оно генерировалось самим дзеном в другом каком то запросе я не увидел.

  • @suvorov_jr2 снифишь запросы только на отправку картинки, лучше использовать фидлер евривеэ.
    смотришь как запрос отправляется, и сверяешь так ли отправился запрос с той же картинкой из бас.
    Находишь разницу, изучаешь почему. Но скорее всего в данном случае вредные советы по переводу в base64.
    Эксперименты с одной и той же картинкой надо проводить. Например разные редакторы могут кучу всяких мета данных добавлять к картинке, дзен может их чистить сначала ...

  • @Bigma
    Я в принципе так и делаю, одну и ту же картинку отправляю. И без перевода в base64 пробовал. А вот идея по чистке мета данных может быть актуальна. Перед загрузкой изображения каждый раз отслеживаются несколько запросов такого типа
    14e6517c-67c3-4372-b7c0-26a9fa11fbe1-image.png

    я думаю может они как то связаны друг с другом, хотя этот запрос данных изображения не отправляет...
    еще есть несколько запросов такого типа:
    f9f384b7-1388-4dcd-af2c-251b6248ec20-image.png
    но они мне кажется не должны влиять на мой пост запрос, хотя может быть я ошибаюсь

  • @suvorov_jr2 смотри тело запроса - это первое что должно совпадать. То есть данные одной и той же картинки должны быть одинаковы. Если так, то уже все остальное...

  • @Bigma
    хорошо, гляну завтра с утра - отпишу если получится, спасибо )

  • @suvorov_jr2 и как додок сказал возможно то что ты принимаешь за [[RANDOM_STRING]] это какой то токен, который возможно есть на странице формы добавления картинки .... Лень изучать, но как вариант.

  • 0 Votes
    3 Posts
    446 Views
  • Помогите с IF

    Поддержка
    0 Votes
    10 Posts
    1035 Views
  • 0 Votes
    8 Posts
    879 Views
  • -1 Votes
    4 Posts
    667 Views
  • 0 Votes
    8 Posts
    1861 Views