private static void EditFileStream(FileDoc fileRecord, Action <XmlDocument> action) { var ctx = BlobStorage.GetBlobStorageContextAsync(fileRecord.FileId, CancellationToken.None) .GetAwaiter().GetResult(); var blobProvider = ctx.Provider; var gcXmlDoc = new XmlDocument(); using (var xmlReaderStream = blobProvider.GetStreamForRead(ctx)) gcXmlDoc.Load(xmlReaderStream); action(gcXmlDoc); var ctdString = gcXmlDoc.OuterXml; var blobProvider2 = BlobStorage.GetProvider(ctdString.Length); var ctx2 = new BlobStorageContext(blobProvider) { VersionId = ctx.VersionId, PropertyTypeId = ctx.PropertyTypeId, Length = ctdString.Length }; blobProvider2.AllocateAsync(ctx2, CancellationToken.None).GetAwaiter().GetResult(); using (var xmlWriterStream = blobProvider2.GetStreamForWrite(ctx2)) { xmlWriterStream.Write(Encoding.UTF8.GetBytes(ctdString)); xmlWriterStream.Flush(); fileRecord.Size = xmlWriterStream.Length; } fileRecord.BlobProvider = blobProvider2.GetType().FullName; fileRecord.BlobProviderData = BlobStorageContext.SerializeBlobProviderData(ctx2.BlobProviderData); }
public async Task <string> UploadFileToResponse(IFormFile file, string homeworkID, string senderID, string subjectID, string classID) { try { _files = database.GetCollection <FileDoc>(homeworkID + "_re_files"); } catch { return(null); } byte[] binaryContent; using (var uploadedFile = file.OpenReadStream()) { using (var memoryStream = new MemoryStream()) { uploadedFile.CopyTo(memoryStream); binaryContent = memoryStream.ToArray(); } } FileDoc fileDoc = new FileDoc { fileContent = binaryContent, senderID = senderID, contentType = file.ContentType, fileName = file.FileName, subjectID = subjectID, classID = classID }; await _files.InsertOneAsync(fileDoc); return(fileDoc.Id); }
private DbFile CreateFromFileRow(FileDoc file) { return(new DbFile { FileId = file.FileId, ContentType = file.ContentType, FileNameWithoutExtension = file.FileNameWithoutExtension, Extension = file.Extension, Size = file.Size, //Checksum = null, Stream = file.Buffer, CreationDate = file.CreationDate, //RowGuid = Guid.Empty, Timestamp = file.Timestamp, Staging = file.Staging, //StagingVersionId = 0, //StagingPropertyTypeId = 0, IsDeleted = file.IsDeleted, BlobProvider = file.BlobProvider, BlobProviderData = file.BlobProviderData, ExternalStream = GetExternalData(file), }); }
private BinaryDataValue CreateBinaryDataValue(InMemoryDataBase db, BinaryPropertyDoc binaryDoc, FileDoc fileDoc = null) { if (fileDoc == null) { fileDoc = db.Files.FirstOrDefault(x => x.FileId == binaryDoc.FileId); } return(new BinaryDataValue { Id = binaryDoc.BinaryPropertyId, FileId = binaryDoc.FileId, Checksum = null, FileName = fileDoc == null ? null : new BinaryFileName(fileDoc.FileNameWithoutExtension.Trim('.'), fileDoc.Extension.Trim('.')), ContentType = fileDoc?.ContentType, Size = fileDoc?.Size ?? 0L, BlobProviderName = fileDoc?.BlobProvider, BlobProviderData = fileDoc?.BlobProviderData, Timestamp = fileDoc?.Timestamp ?? 0L }); }
private byte[] GetExternalData(FileDoc file) { return(GetExternalData(file.BlobProvider, file.BlobProviderData, file.Size)); }