/// <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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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);
        }
Пример #6
0
 /// <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);
        }