public async Task UploadAsync(Guid id, string mimetype, Stream stream) { Asset asset = await GetAssetAsync(id); await AssetData.UploadFromStreamAsync(id.ToString(), stream); using (Stream s = await AssetData.OpenDownloadStreamByNameAsync(asset.Id.ToString())) { SHA256 sha = SHA256.Create(); byte[] hash = sha.ComputeHash(s); string hashString = hash.Aggregate(string.Empty, (a, b) => a += b.ToString("x2")); //await Assets.UpdateOneAsync(Builders<MongoAsset>.Filter.Eq(x => x.Id, id), // Builders<MongoAsset>.Update // .Set(x => x.Size, s.Length) // .Set(x => x.Hash, hashString) // .Inc(x => x.Version, 1)); asset.Hash = hashString; asset.Size = s.Length; asset.MimeType = mimetype; } foreach (IAssetProcessing processing in AssetProcessings.Where(x => x.CanUse(asset))) { using (Stream assetStream = await AssetData.OpenDownloadStreamByNameAsync(asset.Id.ToString())) { await processing.OnAssetChangedAsync(asset, assetStream); } } await Assets.FindOneAndReplaceAsync(Builders <MongoAsset> .Filter.Eq(x => x.Id, asset.Id), asset.ToMongo()); }
public async Task <Stream> DownloadAsync(Guid id) { return(await AssetData.OpenDownloadStreamByNameAsync(id.ToString())); }