Все, что вам нужно сделать, это установить пакет SVG Rendering Library nuget.
Install-Package Svg
И затем
// читаем svg-документ из файловой системы var svgDocument = SvgDocument. Открытый ( "test.svg"); var bitmap = svgDocument.Draw (); // сохранение преобразованного svg в файловую систему bitmap.Save ("test.png", ImageFormat.Png);
Вот и все.
Я был бы на 99% уверен, что для любой zip-библиотеки, которую вы используете, потребуются локальные ресурсы / локальные файлы для создания zip-файла.
Посмотрите на Azure Local Storage для рабочих ролей .
http://vkreynin.wordpress.com/2010/01/10/learning-azure-local-storage-with-me/
Вы можете указать количество локального хранилища в своей рабочей роли, чтобы сохранить доступный контент в процессе.
, например
// Создать раздел локального хранилища в вашей конфигурации .
<WebRole name="...">
<LocalResources>
<LocalStorage name="myLocalStorage" sizeInMB="50"/>
</LocalResources>
</WebRole>
// Затем сохраните ваши файлы в локальном хранилище
CloudBlobContainer container = blobClient.GetContainerReference("myfiles");
CloudBlob blob = container.GetBlobReference("2b5f8ea6-3dc2-4b77-abfe-4da832e02556/AppList/isjirleq/mydocs1.doc");
LocalResource myStorage = RoleEnvironment.GetLocalResource("myLocalStorage");
string filePath = Path.Combine(myStorage.RootPath, "mydocs1.doc");
blob.DownloadToFile(filePath);
. Когда у вас есть все ваши файлы, сохраненные в LocalStorage, используйте ZipLibrary, чтобы собрать все ваши файловые пути вместе
Azure Drive
вместо локального хранилища. Во-первых, Azure Drive
может быть до 1 ТБ (что намного больше, чем локальное хранилище), а во-вторых, данные, однажды записанные на диск, сохраняются.
– Gaurav Mantri
17 September 2013 в 16:48
Поскольку хранилище blob является «просто» хранилищем объектов, вам нужно будет загружать их где-нибудь (это может быть роль веб-/ работника или ваш локальный компьютер), zip их и затем повторно загружать zip-файл. Это единственный способ сделать это, насколько мне известно.
Я не думаю, что вы можете избежать их загрузки, локально их скопировать и загрузить.
Утилиты сжатия работают только с локальными ресурсами. Сама Azure Storage не имеет понятия / способности иметь возможность сжимать некоторые файлы сама по себе
Не думайте, что azure предоставляет какие-либо функции из окна для zipping. Если вам нужно избегать поворота времени, возможно, использование роли рабочего фона - хорошая идея, которая выберет ваши файлы из определенной очереди. Запишите их, загрузите их и сохраните url для вы где-то вроде sql db.Я делал схожие вещи, общаюсь с db, поэтому вы можете быть уверены, что он будет работать очень быстро, если пользователь не поймет, что его на самом деле не происходит на лицевой стороне.
Мы решили эту проблему (частично), запустив файлы непосредственно в выходной поток, используя потоки blob. Это позволяет избежать проблемы с загрузкой zipping, а затем отправлять и избегать задержки, когда это происходит (мы использовали ICSharpZipLib, reference ). Но это все равно означает маршрутизацию потока через веб-сервер:
public void ZipFilesToResponse(HttpResponseBase response, IEnumerable<Asset> files, string zipFileName)
{
using (var zipOutputStream = new ZipOutputStream(response.OutputStream))
{
zipOutputStream.SetLevel(0); // 0 - store only to 9 - means best compression
response.BufferOutput = false;
response.AddHeader("Content-Disposition", "attachment; filename=" + zipFileName);
response.ContentType = "application/octet-stream";
foreach (var file in files)
{
var entry = new ZipEntry(file.FilenameSlug())
{
DateTime = DateTime.Now,
Size = file.Filesize
};
zipOutputStream.PutNextEntry(entry);
storageService.ReadToStream(file, zipOutputStream);
response.Flush();
if (!response.IsClientConnected)
{
break;
}
}
zipOutputStream.Finish();
zipOutputStream.Close();
}
response.End();
}
Служба хранения просто делает это:
public void ReadToStream(IFileIdentifier file, Stream stream, StorageType storageType = StorageType.Stored, ITenant overrideTenant = null)
{
var reference = GetBlobReference(file, storageType, overrideTenant);
reference.DownloadToStream(stream);
}
private CloudBlockBlob GetBlobReference(IFileIdentifier file, StorageType storageType = StorageType.Stored, ITenant overrideTenant = null)
{
var filepath = GetFilePath(file, storageType);
var container = GetTenantContainer(overrideTenant);
return container.GetBlockBlobReference(filepath);
}
response.Body
, убедитесь, что вы установили сборку предварительного просмотра SharpZipLib (совместимую с netstadnard) и удалите код, который дает синтаксические ошибки (например, BufferOutput
),
– CularBytes
24 June 2018 в 11:36