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); }
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); }
/// <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); } }
/// <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); } }
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); }
/// <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); }
/// <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); }