Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
 public async Task <Stream> DownloadAsync(Guid id)
 {
     return(await AssetData.OpenDownloadStreamByNameAsync(id.ToString()));
 }