générer un fichier Zip à partir d'azure blob storage fichiers
J'ai certains fichiers stockés dans mon windows azure blob storage. IWant pour prendre ces fichiers et créer un fichier zip et de les stocker dans un nouveau dossier .Puis retourne le chemin vers le fichier zip.
Définir des autorisations sur le fichier zip de l'emplacement, de sorte que mes utilisateurs peuvent télécharger le fichier zip à leurs machines en cliquant sur le lien
https://mystorage.blob.core.windows.net/myfiles/2b5f8ea6-3dc2-4b77-abfe-4da832e02556/AppList/isjirleq/mydocs1.doc
https://mystorage.blob.core.windows.net/myfiles/2b5f8ea6-3dc2-4b77-abfe-4da832e02556/tempo/xyz/mymusic.mp3
https://mystorage.blob.core.windows.net/myfiles/2b5f8ea6-3dc2-4b77-abfe-4da832e02556/general/video/myVideo.wmv
https://mystorage.blob.core.windows.net/myfiles/2b5f8ea6-3dc2-4b77-abfe-4da832e02556/photo/photo1.png
Je veux être en mesure de boucle de therough ces fichiers zip et tous ensemble pour créer un nouveau fichier zip
(https://mystorage.blob.core.windows.net/myzippedfiles/allmyFiles.zip
) et retourne le chemin vers le fichier zip
J'ai un grand nombre de fichiers dans mon azure blob. Afin de les télécharger et de les compresser et le téléchargement n'est pas une bonne idée.
Comment puis-je faire cela .J'ai besoin d'un exemple de code pour ce faire
OriginalL'auteur Steve | 2013-09-17
Vous devez vous connecter pour publier un commentaire.
Nous avons résolu ce problème (partiellement) par la compression de fichiers directement sur le flux de sortie à l'aide de la goutte ruisseaux. Cela évite le problème de téléchargement de la compression, puis l'envoi et évite les retards tout ce qui se passe (nous avons utilisé ICSharpZipLib, référence). Mais il reste encore des moyens de routage du flux à travers le serveur web:
Le service de stockage n'est tout simplement ceci:
Dans ce cas, le fichier zip est écrit directement dans le flux de réponse donc en fait le téléchargement ne démarre dès que le flux de fichier est écrit. De sorte que le retard est négligeable et aussi longtemps que vous pouvez lire et compresser les données plus rapidement qu'elle est en cours de téléchargement (que vous pouvez dans la plupart des situations). C'est pourquoi nous avons fait cela de cette façon.
Wow, il n'a même pas enregistrer avec moi que vous avez été la diffusion de la réponse dans ce code, mais il est logique. Évidemment, c'est ce que vous avez d'abord dit maintenant que j'ai relu votre réponse 😉 Très cool approche!
Net de base: Utiliser
response.Body
, assurez-vous d'installer la preview build de SharpZipLib (compatible avec netstadnard) et supprimer le code qui donne des erreurs de syntaxe (BufferOutput
par exemple)OriginalL'auteur Richard
Depuis le stockage blob est "juste" un magasin d'objets, vous devez les télécharger quelque part (il pourrait être un web/travailleur rôle ou votre ordinateur local), zip et ensuite reupload le fichier zip. C'est la seule façon de le faire autant que je sache.
OriginalL'auteur Gaurav Mantri
Je ne pense pas que vous pouvez éviter de les télécharger, de les compresser localement, et de les télécharger en arrière.
Utilitaires de Compression de travailler avec les ressources locales. Azure Storage lui-même n'a pas de concept/capacité d'être capable de compresser certains fichiers par lui-même
OriginalL'auteur Igorek
Je voudrais être sûr à 99% que quelque soit le zip de la bibliothèque que vous utilisez exigera des ressources locales/les fichiers locaux afin de créer un fichier zip.
Avoir un regard sur Azure Local de Stockage pour les Rôles de travail.
http://vkreynin.wordpress.com/2010/01/10/learning-azure-local-storage-with-me/
Vous serez en mesure de préciser le montant de local de stockage au sein de votre rôle de travail afin d'enregistrer le contenu accessible dans le processus.
par exemple
//Création d'un Local de Stockage de section dans votre config.
//Puis enregistrer vos fichiers sur le stockage local
Une fois que vous avez tous vos fichiers enregistrés dans LocalStorage, utilisez votre ZipLibrary de regrouper l'ensemble de vos chemins d'accès aux fichiers ensemble
Azure Drive
pour cela à la place de locaux de stockage. Tout d'abord, uneAzure Drive
peut être jusqu'à 1 to (donc beaucoup plus grand que le stockage local) et, deuxièmement, une fois les données écrites sur un disque est conservé.Eh bien, il dit qu'il veut remettre le zip de retour dans BlobStorage. donc on peut supposer qu'il n'a pas besoin d'enregistrer des choses deux fois. Mais ouais, l'Azur Lecteur de travail, en présumant qu'il a besoin de l'espace supplémentaire.
Je sauterais d'Azur en Voiture. Le zip opération est point-à-temps: le Téléchargement de quelques fichiers sur le disque local, zip, pousser vers un blob. Si le disque local échoue lors de l'opération, ne vous inquiétez pas - il suffit d'utiliser un message d'attente pour conserver le "zip de ces fichiers de la commande". De Plus, si vous utilisez Azure Lecteurs, vous avez besoin d'un disque par l'instance de rôle; il semble que beaucoup d'efforts pour peu de gain.
d'accord. La quantité maximale de stockage, vous pouvez attribuer est limitée par la taille de mémoire virtuelle de sorte que la seule raison d'y aller "azure drive" serait si vous avez particulièrement les gros fichiers zip/contenu du fichier de processus par un nombre relativement petit de rôle de travail
OriginalL'auteur Eoin Campbell
Je pense que vous pouvez utiliser webjob ou de de rôle de travail à faire. Lorsque vous recevez une demande de l'utilisateur, appuyez sur cette demande dans la file d'attente, puis retourner l'id de la tâche à l'utilisateur. Webjob ou travailleur rôle d'extraction de la demande à partir de la file d'attente, et de télécharger ces fichiers et zip, puis téléchargez le fichier zip de retour vers le Stockage d'objets blob. Côté frontal code peut utiliser ajax rouleau de vote avec l'id de la tâche pour obtenir la vraie url de téléchargement quand il est fait.
OriginalL'auteur Crazy Crab
ne pense pas que azure fournit à toute zone de fonctionnalité de compression.Si vous avez besoin pour éviter les temps d'exécution peut-être.utilisation d'un fond de rôle de travail être une bonne idée qui permettra de choisir vos fichiers à partir de certains queue.zip eux, de les télécharger et de stocker l'url pour vous quelque part, comme sql db.J'ai fait des choses similaires lors de la communication avec db de sorte que vous pouvez être assuré qu'il sera très rapide sans avoir à l'utilisateur de réaliser que sa en fait pas la passe à l'extrémité avant.
OriginalL'auteur Mandar Jogalekar