Загрузчик файлов - из браузера на backblaze - JavaScript
6000 UAHЕсли коротко:
Может быть сделан на основе плагина dropzonejs.com, innostudio.de, либо любого другого подобного решения.
Загрузчик должен успешно работать как с ‘http' так и с 'https’.
Загрузчик должен работать как в современных браузерах на компьютерах, так и в мобильных браузерах.
Важно обеспечить корректную обработку ошибок загрузки и повторные попытки в случае сбоев.
Данные об успешно загруженных файлах нужно передавать серверу проекта (json)
Назначение:
Загрузчик предназначен для встраивания в форму брифа(описания проекта) при заказе видеомонтажа. Пользователь загружает файлы требуемого на данном шаге брифа типа. Файлы должны быть загружены на сервис хранения данных, информация о них должна быть передана серверу проекта.
Задача:
Обеспечить качественную и безопасную загрузку (drag and drop + кнопка) файлов на сервис хранения данных backblaze.com (видео для монтажа, графические и аудио файлы. это могут быть как большие так и маленькие файлы(размер файла от 0 то 1000 GB), количество также может быть разным от одного до 1000 файлов за раз). При этом следует учесть, что у backblaze.com есть механизм для быстрой (многопоточной) загрузки больших файлов.
https://www.backblaze.com/b2/docs/uploading.html - его нужно задействовать.
Хотелось бы использовать подход близкий к описанному (загрузка из браузара пользователя прямо в хранилище, только тут для azure было сделано):
https://docs.fineuploader.com/branch/master/endpoint_handlers/azure.html
+ важно обеспечить максимальную скорость загрузки (тоесть оптимальное количество потоков и корректную работу с большими файлами)
Загрузка файлов в хранилище осуществляется непосредственно из браузера клиента, с использованием Application Keys минуя их загрузку на наш сервер (используемые для загрузки Application Keys дают права только на добавление файлов, но не на чтение).
!!! Кроме того следует обсудить использование механизма CORS
https://www.backblaze.com/b2/docs/cors_rules.html
сейчас он мне не совсем понятен, но возможно это также часть задачи.
Данные которые загрузчик получает от сервера проекта (предположительно Json)
- language - язык формы (пока делаем русский и английский, но нужна возможность расширять, возможно стоит вынести переводимые данные в отдельный фаил)
- next_page - url страницы куда переходим по завершению загрузки по кнопке «Далее».
- key_id - данные для авторизации
- application_key - данные для авторизации
- bucket_name - корзина раздел куда заливаем
- project_id - название папки куда грузим файлы
- data_type - название папки внутри проекта куда грузим материалы (так как загрузчик может быть использован на разных этапах формирования проекта, например отдельно для загрузки исходного видео, и отдельно для загрузки музыки, и отдельно войсовер аудио, отдельно для загрузки исходников для графики (логотипы, заставки, тигровые плашки, тут как видео файлы так и графическое форматы могут быть))
data_type варианты:
- Source - видео исходники
- Audio - музыка и аудиоэффекты
- VoiceOver - дикторская начитка
- Graphic - картинки, графика
- Project - файлы проекта
- Ready - готовые версии или компоненты проекта
Загрузчик, последовательное описание:
- после выбора или перетаскивания в дропзону пользователем файлов для загрузки, авторизуется через backblaze.com API и начинает их загрузку в указанный bucket_name, в папку project_id/ и в ней в папку data_type/, именнование файлов при загрузке не меняется, тут нужно учесть корректную работу с критическими символами в названиях
- Во время загрузки для каждого файла выводится прогрессбар, характеризующий процесс загрузки, после успешной загрузки файл помечается как успешно загруженный.
Также пользователь видит общий прогрессбар показывающий общую загрузку, скорость передачи данных, прошедшее и предположительно оставшееся до конца загрузки время. По завершении всей загрузки этот прогрессбар меняется на сообщение что загрузка успешно завершена.
При попытке пользователя закрыть вкладку - выдаем предупреждение что в случае закрытия вкладки загрузка будет прервана. - По мере загрузки файлов, информацию о каждом Успешно загруженном файле загрузчик передает на сервер проекта (Json, вероятно RestApi)
- name
- extension
- size
- created_date_time
- upload_start_date_time - момент начала загрузки
- upload_time - время загрузки файла (или можно upload_finish_date_time)
Данные которые хотелось бы также передать, если их возможно получить в браузере (эти данные относятся к загрузке видео, для графических и аудио форматов они не нужны):
- screenshot (хотяб один, в идеале один с каждой минуты видео)
- duration - продолжительность видео
- resolution (video size) - разрешение видео, например 1920х1080
- framerate - частота кадров видео, например 25p
- codec - кодек которым сжато видео
- color_profile - цветовой профиль видео - После полного завершения загрузки файлов загрузчик передает серверу маркер успешной загрузки upload_success = True (Json)
- Внизу формы загрузки присутствует кнопка, «Далее» или «Next» - переход на следующую страницу, она становится активна когда загрузка полностью завершена (передан upload_success).
Дизайн формы загрузчика должен вписываться в дизайн страницы брифа, как это выглядит обсудим дополнительно непосредственно перед началом проекта.
Детали ТЗ и необходимые уточнения готов обсудить в рабочем порядке.
Отзыв заказчика о сотрудничестве с Юрием Никоненко
Загрузчик файлов - из браузера на backblaze - JavaScriptОтлично справился со сложным, нестандарным проектом. Рекомендую!
Отзыв фрилансера о сотрудничестве с Alex Tsumibito
Загрузчик файлов - из браузера на backblaze - JavaScriptАлекс хороший заказчик рекомендую
-

!!! Кроме того следует обсудить использование механизма CORS
https://www.backblaze.com/b2/docs/cors_rules.html
сейчас он мне не совсем понятен, но возможно это также часть задачи.Да, если вы хотите миновать непосредственный процесс загрузки мимо своего сервера на backblaze (взаимодействовать со своим сервером все-равно придется, но не загружать файлы пользователей).
-
Актуальные фриланс-проекты в категории Javascript и Typescript
Нужен frontend-разработчик / верстальщик для разовой доработки сайта на Magento 2
12 730 UAH
Сайт для оценки: https://copy.eurobrands-shop.de/ Задача: исправить frontend-баги на уровне темы Magento 2 / Amasty theme: CSS/LESS/JS, mobile, RTL, minicart, language dropdown, layout shift/CLS. Формат работы: - без локального разворачивания Magento; - работа через DevTools… HTML и CSS верстка, Javascript и Typescript ∙ 8 часов 20 минут назад ∙ 31 ставка |
Game Developer Pixi.Js
15 723 UAH
Ищем разработчика Pixi.js для создания серии из 12 мини-игр. Проекты простые по реализации и при уверенной работе разработка одной игры занимает не более недели. Необходимо реализовать фронтенд и игровую математику, без разработки бэкенда. Игры будут похожи по структуре, но с… Javascript и Typescript, Веб-программирование ∙ 10 часов 47 минут назад ∙ 36 ставок |
Оптимизация Core Web Vitals (OpenCart) под Google PageSpeed — Мобильная и ПК версииОписание заказа: Ищем опытного frontend-разработчика/специалиста по OpenCart для оптимизации скорости загрузки сайта (категории и карточки товаров) под требования Google Core Web Vitals. О проекте: * CMS: OpenCart. * Специфика: Сайт работает в режиме каталога (корзины и… CMS, Javascript и Typescript ∙ 4 дня 7 часов назад ∙ 23 ставки |
Оптимизация скорости сайта WordPress
5092 UAH
полные детали отправим в личные сообщения Цель Максимально ускорить загрузку сайта, особенно на мобильных устройствах. KPI (обязательно) После завершения работ необходимо добиться следующих показателей. Mobile Performance 90+ LCP менее 2.2 сек INP менее 200 мс CLS менее 0.1… HTML и CSS верстка, Javascript и Typescript ∙ 5 дней 3 часа назад ∙ 68 ставок |
Ищем Odoo Developer — соло-разработчика с опытом разработки на Odoo 19 Community EditionЕсть рабочий, чисто спроектированный проект на Odoo 19 Community — CRM для украинского отеля, уже в production-grade инфраструктуре. Переписывать с нуля не планируем. Ищем одного человека, который подхватит проект, сохранит работоспособное и поведет его дальше: сначала CRM →… Javascript и Typescript, Веб-программирование ∙ 7 дней 4 часа назад ∙ 4 ставки |