/// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult Download(string id) { var book = db.Books.Find(new Guid(id)); if (book == null) { return(new HttpNotFoundResult()); } var extName = OpdsHelper.GetExtensionName(book.MimeType); return(new RangeFileResult(Request, HostingEnvironment.MapPath("~/App_Data/Uploaded/") + id + extName, book.Name + extName, book.MimeType)); }
private bool UploadFile(HttpRequestBase request, Book book) { // Files count should be 1. foreach (string file in Request.Files) { if (Request.Files[file] == null || Request.Files[file].ContentLength == 0) { continue; } book.DownloadAddress = MvcApplication.Current.ContentSaver .Store(book.Id + Path.GetExtension(Request.Files[file].FileName), Request.Files[file].InputStream); book.MimeType = OpdsHelper.DetectFileMimeType(Request.Files[file].FileName); book.FileSize = Request.Files[file].ContentLength; return(true); } return(false); }
/// <summary> /// /// </summary> /// <param name="path"></param> /// <param name="id"></param> /// <returns></returns> protected virtual object GetFileOpdsInfo(string path, string id) { var fileInfo = new FileInfo(path); var fileVersionInfo = FileVersionInfo.GetVersionInfo(path); return(new { Id = id, Title = fileInfo.Name, Summary = fileVersionInfo.FileDescription, UpdateTime = fileInfo.LastWriteTime, OpdsDataType = OpdsDataType.Detial, Length = fileInfo.Length, CreateTime = fileInfo.CreationTime, Language = fileVersionInfo.Language, CopyRight = fileVersionInfo.LegalCopyright, Publisher = fileVersionInfo.CompanyName, AuthorName = fileVersionInfo.CompanyName, MediaType = OpdsHelper.DetectFileMimeType(path) }); }
/// <summary> /// /// </summary> /// <returns></returns> public override OpdsData Process() { var id = Id ?? String.Empty; var root = Path.Combine(RootFolder, id); var items = new List <object>(); var result = new OpdsData() { Data = items }; if (!Directory.Exists(root)) { throw new ArgumentException("id"); } foreach (var path in Directory.GetFiles(root)) { if (OpdsHelper.IsFileSupported(path)) { // Path will be used as Id. var item = GetFileOpdsInfo(path, Path.Combine(id, Path.GetFileName(path))); items.Add(item); } } foreach (var path in Directory.GetDirectories(root)) { var directoryInfo = new DirectoryInfo(path); items.Add(new { Id = Path.Combine(id, Path.GetFileName(path)), Title = directoryInfo.Name, UpdateTime = directoryInfo.LastWriteTime, OpdsDataType = OpdsDataType.Category, }); } return(result); }
/// <summary> /// 处理文件搜索请求 /// </summary> /// <returns></returns> public override OpdsData Process() { var id = Id ?? String.Empty; var root = Path.Combine(RootFolder, id); var items = new List <object>(); var result = new OpdsData() { Data = items }; foreach (var file in Directory.GetFiles(root, KeyWord, SearchOption.AllDirectories)) { if (OpdsHelper.IsFileSupported(file)) { // Path will be used as Id. var item = GetFileOpdsInfo(file, Path.Combine(id, Path.GetFileName(file))); items.Add(item); } } return(result); }
/// <summary> /// /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult Download(string id) { // Given the file name to force download instead of opening within the browser. return(File(Path.Combine("~/App_Data", id), OpdsHelper.DetectFileMimeType(id), Path.GetFileName(id))); }
public void GetExtensionNameTest() { var ext = OpdsHelper.GetExtensionName("text/plain"); Assert.AreEqual(".txt", ext); }
public void DetectFileMimeTypeTest() { var mime = OpdsHelper.DetectFileMimeType(@"C:\a.txt"); Assert.AreEqual("text/plain", mime); }