Я пытаюсь использовать this pluggin (express-zip). В размере Azure Storage у нас есть getBlobToStream
, которые дают нам файл в определенный поток. Теперь я получаю изображение из блоба и сохраняю его внутри сервера, а затем res.zip
. Как-то можно создать writeStream, который будет писать внутри readStream?Windows Azure Storage Blobs для zip-файла с помощью Express
ответ
Я являюсь автором экспресс-почтового индекса. То, что вы пытаетесь сделать, должно быть возможным. Если смотреть под одеялом, вы будете видеть, что я на самом деле добавления потоков в zip:
https://github.com/thrackle/express-zip/blob/master/lib/express-zip.js#L55
Так что-то, как это должно работать для вас (до меня, добавив поддержку для этого в интерфейсе сам пакет):
var zip = zipstream(exports.options);
zip.pipe(express.response || http.ServerResponse.prototype); // res is a writable stream
var addFile = function(file, cb) {
zip.entry(getBlobToStream(), { name: file.name }, cb);
};
async.forEachSeries(files, addFile, function(err) {
if (err) return cb(err);
zip.finalize(function(bytesZipped) {
cb(null, bytesZipped);
});
});
Извините, если я допустил ужасные ошибки выше; Я не был на это немного.
Редактировать: Вопрос был изменен, чтобы спросить об этом в экспресс из Node.js. Я оставляю оригинальный ответ ниже, если кто-то заинтересован в решении C#.
Для узла можно использовать стратегию, аналогичную используемой функцией express-zip, но вместо того, чтобы передавать поток чтения файла в this line, передайте поток чтения blob, полученный с помощью createReadStream.
Решение с использованием C#:
Если вы не возражаете кэширования все локально в то время как вы строите молнию, как вы делаете это хорошо. Вы можете использовать такой инструмент, как AzCopy, чтобы быстро загрузить весь контейнер из хранилища.
Чтобы избежать кэширования локально, можно использовать ZipArchive класс, например, следующий C# код:
internal static void ArchiveBlobs(CloudBlockBlob destinationBlob, IEnumerable<CloudBlob> sourceBlobs)
{
using (Stream blobWriteStream = destinationBlob.OpenWrite())
{
using (ZipArchive archive = new ZipArchive(blobWriteStream, ZipArchiveMode.Create))
{
foreach (CloudBlob sourceBlob in sourceBlobs)
{
ZipArchiveEntry archiveEntry = archive.CreateEntry(sourceBlob.Name);
using (Stream archiveWriteStream = archiveEntry.Open())
{
sourceBlob.DownloadToStream(archiveWriteStream);
}
}
}
}
}
Это создает архив почтового индекса в хранилище Azure, который содержит несколько сгустки без ничего писать на диск локально.
- 1. Azure Blob Storage Listing Blobs
- 2. Использование маркера с Azure Storage Список Blobs
- 3. Клиент Java Azure Storage - удаление blobs
- 4. Azure Storage Поиск Blobs по метаданным
- 5. Защищенные Blobs в Azure
- 6. C++ соединение с Windows Azure Storage
- 7. Azure - вызов Storage rest api для списка blobs
- 8. Листинг Azure storage blobs в общедоступном контейнере анонимно
- 9. Использование Azure Blobs с Azure Website
- 10. Azure Storage Blobs: какой blob я получаю с GetBlobReference()?
- 11. MP3 поток (только аудио) из Azure Cloud Storage Blobs с помощью Azure Media Services
- 12. Атомные обновления Azure Blobs
- 13. Azure Storage Blob: установить CORS на уровень blobs?
- 14. Список blobs в Azure Storage из SQL Server
- 15. Обновление Azure SDK 2.4 «сломалось» Разработка Storage Blobs
- 16. Понимание Azure Storage (blobs) со счетами и контейнерами. Тестовые контейнеры?
- 17. Как перечислить все виртуальные каталоги и подкаталоги с помощью клиентской библиотеки Azure Storage для .NET (BLOBS)
- 18. для Windows Azure Table Storage заспорить
- 19. Другие проблем с Windows Azure Storage
- 20. Azure Хранение биллинга для удаленных blobs
- 21. Загрузка изображений из Azure Blobs в PictureBoxes?
- 22. TeamCity и Windows Azure Blob Storage
- 23. Как читать содержимое Blobs с использованием Azure Storage SDK для Python?
- 24. IIS random зависает с Windows Azure Storage Encryption
- 25. Azure Blob Storage - listblobs в контейнере $ logs
- 26. Работа с Azure Storage Emulator возвращает 404
- 27. Windows Azure Blob Storage Emulator Место хранения файлов
- 28. Windows Azure Table Storage Операторы LINQ
- 29. Загрузка Azure blobs с использованием rest api
- 30. Разархивировать папку в Windows Azure Blob Storage
Я забыл упомянуть, что я работаю над nodejs –
Я отредактировал ответ, чтобы отразить новый вопрос, но я оставляю решение C# на случай, если кому-то это интересно. В принципе, @thrackle верен. Вы можете использовать ту же технику, что и express-zip, но использовать поток blob и имя blob вместо потока файлов и имени файла. –