コード例 #1
0
        private void SendDownload(HttpContext context, IDigitalMedia model, IPublishedContent mediaItem)
        {
            //TODO: pull this from model
            string file = mediaItem.GetPropertyValue <string>("umbracoFile");

            var fullFilename = context.Server.MapPath(file);

            context.Response.Clear();
            context.Response.ContentType  = "application/octet-stream";//set file type
            context.Response.Buffer       = false;
            context.Response.BufferOutput = false;
            //set download filename + ensure download widget (stops pdf's opening in browser!)
            context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", Path.GetFileName(fullFilename)));

            //send file down stream
            //context.Response.TransmitFile();
            context.Response.WriteFile(fullFilename);

            context.Response.Flush();
            context.Response.Close();

            //update database to mark it as downloaded, after the stream completes if possible
            model.FirstAccessed = DateTime.Now;
            MerchelloContext.Current.Services.DigitalMediaService.Save(model);
        }
コード例 #2
0
        private void SendDownload(HttpContext context, IDigitalMedia model, IPublishedContent mediaItem)
        {
            //TODO: pull this from model
            string file = mediaItem.GetPropertyValue <string>("umbracoFile");

            var fullFilename = context.Server.MapPath(file);

            var bin = System.IO.File.ReadAllBytes(fullFilename);

            context.Response.ClearHeaders();
            context.Response.ClearContent();
            context.Response.ContentType = "application/octet-stream"; //set file type
            context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", Path.GetFileName(fullFilename)));
            context.Response.BinaryWrite(bin);
            context.Response.Flush();
            context.Response.End();

            //update database to mark it as downloaded, after the stream completes if possible
            model.FirstAccessed = DateTime.Now;
            MerchelloContext.Current.Services.DigitalMediaService.Save(model);
        }
コード例 #3
0
        /// <summary>
        /// Deletes a single <see cref="IDigitalMedia"/> from the database.
        /// </summary>
        /// <param name="digitalMedia">
        /// The digital media.
        /// </param>
        /// <param name="raiseEvents">
        /// Optional boolean indicating whether or not to raise events.
        /// </param>
        public void Delete(IDigitalMedia digitalMedia, bool raiseEvents = true)
        {
            if (raiseEvents)
            {
                Deleting.RaiseEvent(new DeleteEventArgs <IDigitalMedia>(digitalMedia), this);
            }

            using (new WriteLock(Locker))
            {
                var uow = UowProvider.GetUnitOfWork();
                using (var repository = RepositoryFactory.CreateDigitalMediaRepository(uow))
                {
                    repository.Delete(digitalMedia);
                    uow.Commit();
                }
            }

            if (raiseEvents)
            {
                Deleted.RaiseEvent(new DeleteEventArgs <IDigitalMedia>(digitalMedia), this);
            }
        }
コード例 #4
0
        /// <summary>
        /// Saves a single <see cref="IDigitalMedia"/>
        /// </summary>
        /// <param name="digitalMedia">
        /// The digital media.
        /// </param>
        /// <param name="raiseEvents">
        ///  Optional boolean indicating whether or not to raise events
        /// </param>
        public void Save(IDigitalMedia digitalMedia, bool raiseEvents = true)
        {
            if (raiseEvents)
            {
                Saving.RaiseEvent(new SaveEventArgs <IDigitalMedia>(digitalMedia), this);
            }

            using (new WriteLock(Locker))
            {
                var uow = _uowProvider.GetUnitOfWork();
                using (var repository = _repositoryFactory.CreateDigitalMediaRepository(uow))
                {
                    repository.AddOrUpdate(digitalMedia);
                    uow.Commit();
                }
            }

            if (raiseEvents)
            {
                Saved.RaiseEvent(new SaveEventArgs <IDigitalMedia>(digitalMedia), this);
            }
        }
コード例 #5
0
        private void SendDownload(HttpContext context, IDigitalMedia model, IPublishedContent mediaItem)
        {
            //TODO: pull this from model
            string file = mediaItem.GetPropertyValue<string>("umbracoFile");

            var fullFilename = context.Server.MapPath(file);

            context.Response.Clear();
            context.Response.ContentType = "application/octet-stream";//set file type
            context.Response.Buffer = false;
            context.Response.BufferOutput = false;
            //set download filename + ensure download widget (stops pdf's opening in browser!)
            context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", Path.GetFileName(fullFilename)));

            //send file down stream
            //context.Response.TransmitFile();
            context.Response.WriteFile(fullFilename);

            context.Response.Flush();
            context.Response.Close();

            //update database to mark it as downloaded, after the stream completes if possible
            model.FirstAccessed = DateTime.Now;
            MerchelloContext.Current.Services.DigitalMediaService.Save(model);
        }
コード例 #6
0
        /// <summary>
        /// Saves a single <see cref="IDigitalMedia"/>
        /// </summary>
        /// <param name="digitalMedia">
        /// The digital media.
        /// </param>
        /// <param name="raiseEvents">
        ///  Optional boolean indicating whether or not to raise events
        /// </param>
        public void Save(IDigitalMedia digitalMedia, bool raiseEvents = true)
        {
            if (raiseEvents) Saving.RaiseEvent(new SaveEventArgs<IDigitalMedia>(digitalMedia), this);

            using (new WriteLock(Locker))
            {
                var uow = UowProvider.GetUnitOfWork();
                using (var repository = RepositoryFactory.CreateDigitalMediaRepository(uow))
                {
                    repository.AddOrUpdate(digitalMedia);
                    uow.Commit();
                }
            }

            if (raiseEvents) Saved.RaiseEvent(new SaveEventArgs<IDigitalMedia>(digitalMedia), this);
        }
コード例 #7
0
        /// <summary>
        /// Deletes a single <see cref="IDigitalMedia"/> from the database.
        /// </summary>
        /// <param name="digitalMedia">
        /// The digital media.
        /// </param>
        /// <param name="raiseEvents">
        /// Optional boolean indicating whether or not to raise events.
        /// </param>
        public void Delete(IDigitalMedia digitalMedia, bool raiseEvents = true)
        {
            if (raiseEvents) Deleting.RaiseEvent(new DeleteEventArgs<IDigitalMedia>(digitalMedia), this);

            using (new WriteLock(Locker))
            {
                var uow = _uowProvider.GetUnitOfWork();
                using (var repository = _repositoryFactory.CreateDigitalMediaRepository(uow))
                {
                    repository.Delete(digitalMedia);
                    uow.Commit();
                }
            }

            if (raiseEvents) Deleted.RaiseEvent(new DeleteEventArgs<IDigitalMedia>(digitalMedia), this);
        }