Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отправка файлов на сервер через апи

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Соц Сеть
Отправлено: 19 Октября, 2020 - 16:06:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Добрый день! последнее время очень часто слышу от ios, android разработчиков что обычный вариант отправки картинок на сервер (который мы можем получить через $_FILES) устарел и теперь они предлагают отправить файл как обычный string параметр в формате base64 а на сервер это преобразовать в файл через fwrite(или каким то аналогом) и сохранить.
Теперь вопрос как вы думаете есть ли логика в этом или нет ?
 
 Top
LIME
Отправлено: 19 Октября, 2020 - 22:26:49
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Через какой апи? Наверное RESTlike JSON API.
Соц Сеть пишет:
устарел
пусть ответят прежде всего на вопрос - в чем он устарел? сами себе хотябы
если так уж хотят упарываться тогда и отдавать им картинки как base64 внутри объекта ответа вместо ссылки на src )) хотя можно конечно рассматривать ссылки как линки hateoas
не обязательно все клиентсерверное взаимодействие нужно делать через Api
пусть рассматривают загрузку картинок как микросервис медиахостинга без апи
тут важнее взвесить что это изменение дает в плюсах и минусах в вашем случае
если уже реализовано, то надо ли трогать?
если не реализовано, то насколько будет нагружен сервис загрузками? base64 дает +30% к размеру
и если делать "по старинке", то как реализовывать всякие уже сделаные для апи штуки, например аутентификацию? хотя тут возможно и не будет проблем
мобильщики конечно красавцы, а как будут паковать в base64 браузерные web-клиентщики? у них доступа к содержимому файла нет

плюсы то в чем? если только в том что им там в своих приложениях так легче, то подумать и о том что есть разные клиенты
тут главное вам всем в религии слепо не ударяться

З.Ы.: если выскажут плюсы, кидай сюда, мне интересно посмотреть
(Добавление)
вот вроде чтото дельное
https://ru[dot]stackoverflow[dot]com/que[dot][dot][dot]1%86%D0%B8%D0%B8
 
 Top
Vladimir Kheifets
Отправлено: 20 Октября, 2020 - 14:41:34
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Соц Сеть пишет:
Добрый день! последнее время очень часто слышу от ios, android разработчиков что обычный вариант отправки картинок на сервер (который мы можем получить через $_FILES) устарел и теперь они предлагают отправить файл как обычный string параметр в формате base64 а на сервер это преобразовать в файл через fwrite(или каким то аналогом) и сохранить.
Теперь вопрос как вы думаете есть ли логика в этом или нет ?


Добрый день!
Действительно, сейчас во многих проектах не используют <input type="file"> для отправки картинок на сервер,
а на стороне клиента реализуют загрузку, предварительный просмотр, редактирование и отправку.
Для отправки файл как обычный string в бинарном фомате используют HTMLCanvasElement.toBlob()
https://developer[dot]mozilla[dot]org/en[dot][dot][dot]asElement/toBlob
Вы можете помотреть полную спецификацию File API здесь.
http://www[dot]w3[dot]org/TR/file-upload/
Советую Вам скачать этот проект
https://github[dot]com/fengyuanchen/cropperjs
В нём посмотрите примеры.
https://fengyuanchen[dot]github[dot]io/photo-editor/
https://fengyuanchen[dot]github[dot]io/c[dot][dot][dot]e-to-server[dot]html
В этом случае на стороне сервера Вы так же получаете $_FILES и можете его обрабатывать на PHP.
Думаю есть логика в использовании современных методов вообщее и в данном контексте.
К сожалению устаревшие браузеры, не поодерживаю element canvas и метод toBlob().
В свoих проетах проверяю так
Спойлер (Отобразить)
Удачи!
 
 Top
LIME
Отправлено: 20 Октября, 2020 - 14:48:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Vladimir Kheifets пишет:
как обычный string в бинарном фомате
это как?))
Vladimir Kheifets пишет:
Вы так же получаете $_FILES и можете его обрабатывать на PHP.

LIME пишет:
Через какой апи? Наверное RESTlike JSON API.

похоже ты не понял о каком API идет речь
но вариант возможно годный в браузере для случая тс, только вот blob преобразовать через base64 всетаки в string
не бывает string в бинарном формате)) данные или текстовые или бинарные))
 
 Top
Vladimir Kheifets
Отправлено: 26 Октября, 2020 - 13:45:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




LIME пишет:
Vladimir Kheifets пишет:
как обычный string в бинарном фомате
это как?))
Vladimir Kheifets пишет:
Вы так же получаете $_FILES и можете его обрабатывать на PHP.

LIME пишет:
Через какой апи? Наверное RESTlike JSON API.

похоже ты не понял о каком API идет речь
но вариант возможно годный в браузере для случая тс, только вот blob преобразовать через base64 всетаки в string
не бывает string в бинарном формате)) данные или текстовые или бинарные))


LIME, похоже ты не понял о каком API идет речь.

Речь идёт о File API
http://www[dot]w3[dot]org/TR/file-upload/
См. там метод HTMLCanvasElement.toBlob().
Уточню "обычный string в бинарном фомате" - toBlob() преобразуют img в Blob и возвращает строку в base64.
Как это работает с PHP
js (File API, Canvas.toBlob)
CODE (javascript):
скопировать код в буфер обмена
  1. Canvas.toBlob(
  2. function (blob) {
  3. var formData = new FormData();
  4. formData.append('file-upload', blob, 'upload.jpg');
  5. ......

PHP
PHP:
скопировать код в буфер обмена
  1. $upload = $_FILES['file-upload'];
  2. $tmp = $upload['tmp_name'];
  3. $name = $upload['name']);
  4. ................

(Отредактировано автором: 26 Октября, 2020 - 13:49:49)

 
 Top
LIME
Отправлено: 28 Октября, 2020 - 21:18:12
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Vladimir Kheifets пишет:
Речь идёт о File API
эээ...нет
речь идет о REST
Соц Сеть пишет:
который мы можем получить через $_FILES) устарел
спорим?
(Добавление)
Vladimir Kheifets если я выиграю ты перестанешь в ответах полностью копироват предшествующий пост ЦЕЛИКОМ!!!
для чего ты вообще это делаешь?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB