Pregunta

Tengo un proyecto que requiere un proceso bastante complicado y quiero asegurarme de saber cuál es la mejor manera de hacerlo. Estoy usando ASP.net C # con Adobe Flex 3. El servidor de aplicaciones es Mosso (servidor en la nube) y el servidor de almacenamiento de archivos es Amazon S3. El sitio existente se puede ver en NoiseTrade.com

Necesito hacer esto:

  • Permitir a los usuarios subir archivos MP3 a un álbum " widget "
  • Después de que el usuario haya subido su álbum / widget, necesito comprime automáticamente el mp3 (para otro usuarios para descargar) y subir el zip junto con las pistas de mp3 para Amazon S3

Realmente ya tengo esto funcionando (usando el procesamiento del lado del cliente en Flex) pero esto ya no funciona debido a la seguridad flash 10 '' de Adobe '' actualizar. Así que ahora necesito implementar este lado del servidor.

La forma en que pienso hacer esto es:

  • Almacene el mp3 en una carpeta temporal en el servidor de aplicaciones
  • Cuando el artista " publica " crear un zip de los archivos en esa carpeta utilizando una biblioteca de C #
  • Inicie el proceso de carga de Amazon S3 (zip y mp3) y enviar un correo electrónico al usuario cuando esté terminado (así como eliminar el carpeta temporal)

El principal problema que veo con este enfoque es que si un usuario elimina o agrega una pista más adelante, tendré que actualizar el archivo zip, pero los archivos temporales ya no existirán.

Estoy perdido en la mejor manera de hacer esto y agradecería cualquier consejo que pueda tener.

¡Gracias!

¿Fue útil?

Solución

El bit sobre actualizar el archivo zip pero no tener los archivos temporales si el usuario agrega o elimina una pista me lleva a sospechar que desea crear archivos zip que contengan varias pistas, posiblemente álbumes completos. Si esto es incorrecto y solo está poniendo un solo mp3 en cada zip, entonces StingyJack está en lo cierto y probablemente terminará haciendo el archivo (ligeramente) más grande en lugar de más pequeño al comprimirlo.

Si mi interpretación es correcta, entonces estás de suerte. Las herramientas zip de la línea de comandos frecuentemente tienen banderas que se pueden usar para agregar o eliminar archivos de un archivo zip existente. No ha indicado qué biblioteca u otro método está utilizando para hacer la compresión, pero espero que probablemente también tenga esta capacidad.

Otros consejos

Los MP3 están comprimidos. ¿Por qué molestarse en comprimirlos?

Yo diría que no es necesario comprimir un formato de archivo comprimido, solo está dispuesto a obtener una reducción del cinco por ciento en el tamaño del archivo, dar o tomar un poco. Los Mp3 realmente no se comprimen por su naturaleza, ya han comprimido la mayoría de los datos posibles.

DotNetZip puede comprimir archivos de C # / ASP.NET. Estoy de acuerdo con los carteles anteriores sobre la compresibilidad de los MP3. DotNetZip automáticamente omitirá la compresión en MP3 y solo almacenará el archivo, solo por esta razón. Todavía puede ser interesante usar un zip como contenedor de empaque / archivo, aparte de la compresión.

Si cambia el archivo zip más tarde (el usuario agrega una pista), puede tomar el archivo .zip de S3 y simplemente actualizarlo. DotNetZip también puede actualizar archivos zip. Pero en este caso, tendría que pagar el costo de transferencia dentro y fuera de S3.

DotNetZip puede hacer todo esto con el manejo en memoria de las cremalleras, aunque eso puede no ser factible para archivos grandes con muchos MP3 y muchos usuarios concurrentes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top