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





MP3 сжаты. Зачем их застегивать?
потому что таким образом вы можете сгруппировать несколько файлов вместе, хотя на самом деле вы получаете только ту же функциональность, что и в гораздо более простом формате .tar.
да, архивирование, чтобы поклонники артиста могли загружать файлы в один клик, а не по треку.
О ... Я прочитал «Мне нужно автоматически заархивировать mp3», поэтому я подумал, что мы говорим об отдельных файлах.
Я бы сказал, что нет необходимости архивировать сжатый формат файла, вам нужно только уменьшить размер файла на пять процентов, плюс-минус немного. Mp3 по своей природе не заархивированы - они уже сжали большую часть возможных данных.
Немного об обновлении zip-архива, но отсутствии временных файлов, если пользователь добавляет или удаляет трек, заставляет меня подозревать, что вы хотите создать zip-архив, содержащий несколько треков, возможно, полные альбомы. Если это неверно, и вы просто помещаете один mp3 в каждый zip, тогда StingyJack прав, и вы, вероятно, в конечном итоге сделаете файл (немного) больше, а не уменьшите его, заархивировав его.
Если моя интерпретация верна, то вам повезло. У инструментов командной строки zip часто есть флаги, которые можно использовать для добавления файлов или удаления файлов из существующего zip-архива. Вы не указали, какую библиотеку или другой метод вы используете для архивирования, но я ожидаю, что он, вероятно, также имеет эту возможность.
Да, zip-файлы почти всегда содержат более одного mp3 (в большинстве случаев это полные альбомы). Проблема с изменением существующего zip-файла заключается в том, что ни один из файлов не находится на реальном сервере приложений. Все они хранятся в Amazon S3 из-за затрат на полосу пропускания.
Даже в этом случае ... Как бы вы предложили изменить файл (заархивированный или нет), который находится на другом сервере? Если на сервере S3 нет API «изменения zip-файла», тогда, конечно, вам придется загрузить копию старой версии, изменить ее и загрузить новую версию. На самом деле, нет другого пути.
Правда, сейчас я загружаю все треки обратно в память (используя флеш-память), а затем архивирую их и отправляю обратно. Думаю, мне приходилось передавать треки в память сервера каждый раз, когда требовался новый zip-файл. Это не будет весело: /
DotNetZip может архивировать файлы из C# / ASP.NET. Я согласен с предыдущими плакатами относительно сжимаемости MP3. DotNetZip автоматически выполняет сжатие пропускать в MP3 и просто сохраняет файл только по этой причине. По-прежнему может быть интересно использовать zip в качестве контейнера для упаковки / архива, помимо сжатия.
Если вы позже измените zip-файл (пользователь добавляет дорожку), вы можете получить файл .zip с S3 и просто обновить его. DotNetZip также может обновлять zip-файлы. Но в этом случае вам придется заплатить за перевод в S3 и обратно.
DotNetZip может делать все это с помощью обработки zip-архивов в памяти - хотя это может оказаться невозможным для больших архивов с большим количеством MP3-файлов и множеством одновременных пользователей.
Спасибо за вклад! Чтобы уточнить, архивирование важно, потому что это то, что поклонники исполнителя загрузят, когда они «зарегистрируются» через виджет. Чтобы увидеть виджеты, о которых я говорю, посетите noisetrade.com.