public void MimeTypeGet() { Assert.IsTrue(MimeTypeMapping.TryGetMapping(MimeTypes.Text.Plain, out var mapping)); Assert.AreEqual(".txt", mapping.Extensions[0]); Assert.IsFalse(mapping.IsCompressedContent); MimeTypeMapping.Update("quark", false, true, ".quark", ".txt"); Assert.AreEqual(".quark", MimeTypeMapping.GetExtensionFromMimeType("quark")); Assert.AreEqual("quark", MimeTypeMapping.GetMimeTypeFromExtension(".quark")); MimeTypeMapping.Update(MimeTypes.Text.Plain, false, false, ".txt", ".text"); Assert.AreEqual(MimeTypes.Text.Plain, MimeTypeMapping.GetMimeTypeFromExtension(".text")); }
} // proc WriteAsync public override async Task WriteAsync(XmlWriter xml, IDataRow row) { var objkIdKey = GetValue(row); if (objkIdKey == null) { return; } var objkId = objkIdKey.ChangeType <long>(); // check cache if (session.exportedImages.TryGetValue(objkId, out var fi) && fi != null) { await WriteAsync(xml, fi); return; } // mark as exported session.exportedImages[objkId] = null; // test if the object is an image var obj = session.application.Objects.GetObject(objkId); if (obj.MimeType != MimeTypes.Image.Jpeg && obj.MimeType != MimeTypes.Image.Png && obj.MimeType != MimeTypes.Application.Pdf) { return; } // write object to disc // todo: optimize to use direct link fi = session.CreateTempFile(objkId.ToString() + MimeTypeMapping.GetExtensionFromMimeType(obj.MimeType), true); using (var dst = fi.OpenWrite()) using (var src = obj.GetDataStream()) await src.CopyToAsync(dst); await WriteAsync(xml, fi); session.exportedImages[objkId] = fi; } // proc WriteAsnyc
public FileInfo GetLocalTempFileInfo(PpsObject obj) { // create temp directory var tempDirectory = new DirectoryInfo(Path.Combine(LocalPath.FullName, "tmp")); if (!tempDirectory.Exists) { tempDirectory.Create(); } // build filename if (obj.TryGetProperty <string>(PpsObjectBlobData.FileNameTag, out var fileName)) { fileName = obj.Guid.ToString("N") + "_" + fileName; } else { fileName = obj.Guid.ToString("N") + MimeTypeMapping.GetExtensionFromMimeType(obj.MimeType); } return(new FileInfo(Path.Combine(tempDirectory.FullName, fileName))); } // func GetLocalTempFileInfo