Лучший процесс для автоматического архивирования нескольких MP3-файлов

У меня есть проект, который требует довольно сложного процесса, и я хочу убедиться, что знаю, как это сделать лучше всего. Я использую ASP.net C# с Adobe Flex 3. Сервер приложений - Mosso (облачный сервер), а сервер хранения файлов - Amazon S3. Существующий сайт можно посмотреть по адресу NoiseTrade.com

Мне нужно сделать это:

  • Разрешить пользователям загружать файлы MP3 в "виджет" альбома
  • После того, как пользователь загрузил свои альбом / виджет, мне нужно автоматически заархивировать mp3 (для других пользователей для загрузки) и загрузите zip вместе с mp3-треками в Amazon S3

На самом деле у меня это уже работает (с использованием обработки на стороне клиента в Flex), но это больше не работает из-за обновления «безопасности» Adobe flash 10. Итак, теперь мне нужно реализовать эту серверную часть.

Я думаю об этом так:

  • Сохраните mp3 во временной папке на сервере приложений
  • Когда художник "публикует", создайте zip файлов в этой папке используя библиотеку C#
  • Запустите процесс загрузки amazon S3 (zip и mp3) и напишите пользователю, когда он завершено (а также удаление временная папка)

Основная проблема, которую я вижу в этом подходе, заключается в том, что если пользователь удалит или добавит трек позже, мне придется обновить zip-файл, но временные файлы больше не будут существовать.

Я не понимаю, как лучше всего это сделать, и буду признателен за любой совет, который вы могли бы дать.

Спасибо!

Спасибо за вклад! Чтобы уточнить, архивирование важно, потому что это то, что поклонники исполнителя загрузят, когда они «зарегистрируются» через виджет. Чтобы увидеть виджеты, о которых я говорю, посетите noisetrade.com.

Mark 10.11.2008 21:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
644
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

MP3 сжаты. Зачем их застегивать?

потому что таким образом вы можете сгруппировать несколько файлов вместе, хотя на самом деле вы получаете только ту же функциональность, что и в гораздо более простом формате .tar.

Joel Coehoorn 10.11.2008 20:26

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

Mark 10.11.2008 21:03

О ... Я прочитал «Мне нужно автоматически заархивировать mp3», поэтому я подумал, что мы говорим об отдельных файлах.

StingyJack 10.11.2008 23:49

Я бы сказал, что нет необходимости архивировать сжатый формат файла, вам нужно только уменьшить размер файла на пять процентов, плюс-минус немного. Mp3 по своей природе не заархивированы - они уже сжали большую часть возможных данных.

Ответ принят как подходящий

Немного об обновлении zip-архива, но отсутствии временных файлов, если пользователь добавляет или удаляет трек, заставляет меня подозревать, что вы хотите создать zip-архив, содержащий несколько треков, возможно, полные альбомы. Если это неверно, и вы просто помещаете один mp3 в каждый zip, тогда StingyJack прав, и вы, вероятно, в конечном итоге сделаете файл (немного) больше, а не уменьшите его, заархивировав его.

Если моя интерпретация верна, то вам повезло. У инструментов командной строки zip часто есть флаги, которые можно использовать для добавления файлов или удаления файлов из существующего zip-архива. Вы не указали, какую библиотеку или другой метод вы используете для архивирования, но я ожидаю, что он, вероятно, также имеет эту возможность.

Да, zip-файлы почти всегда содержат более одного mp3 (в большинстве случаев это полные альбомы). Проблема с изменением существующего zip-файла заключается в том, что ни один из файлов не находится на реальном сервере приложений. Все они хранятся в Amazon S3 из-за затрат на полосу пропускания.

Mark 10.11.2008 21:02

Даже в этом случае ... Как бы вы предложили изменить файл (заархивированный или нет), который находится на другом сервере? Если на сервере S3 нет API «изменения zip-файла», тогда, конечно, вам придется загрузить копию старой версии, изменить ее и загрузить новую версию. На самом деле, нет другого пути.

Dave Sherohman 10.11.2008 21:29

Правда, сейчас я загружаю все треки обратно в память (используя флеш-память), а затем архивирую их и отправляю обратно. Думаю, мне приходилось передавать треки в память сервера каждый раз, когда требовался новый zip-файл. Это не будет весело: /

Mark 11.11.2008 00:41

DotNetZip может архивировать файлы из C# / ASP.NET. Я согласен с предыдущими плакатами относительно сжимаемости MP3. DotNetZip автоматически выполняет сжатие пропускать в MP3 и просто сохраняет файл только по этой причине. По-прежнему может быть интересно использовать zip в качестве контейнера для упаковки / архива, помимо сжатия.

Если вы позже измените zip-файл (пользователь добавляет дорожку), вы можете получить файл .zip с S3 и просто обновить его. DotNetZip также может обновлять zip-файлы. Но в этом случае вам придется заплатить за перевод в S3 и обратно.

DotNetZip может делать все это с помощью обработки zip-архивов в памяти - хотя это может оказаться невозможным для больших архивов с большим количеством MP3-файлов и множеством одновременных пользователей.

Другие вопросы по теме