Tôi có một cơ sở dữ liệu sql lưu trữ một số tài liệu.C# ASP.NET 3.5 giải quyết các vấn đề về tải tệp nội dung
Người dùng có thể đăng nhập vào ứng dụng và xem danh sách tài liệu của họ.
Khi nhấp vào liên kết tải xuống nút trong chế độ xem lưới tài liệu của chúng, tôi lấy tệp từ cơ sở dữ liệu, ghi tệp đó vào hệ thống tệp và sau đó thực thi mã này.
System.IO.FileInfo file = new System.IO.FileInfo(System.Configuration.ConfigurationManager.AppSettings["UploadPath"] + DocumentName);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.Cookies.Clear();
Response.Cache.SetCacheability(HttpCacheability.Private);
Response.CacheControl = "private";
Response.Charset = System.Text.UTF8Encoding.UTF8.WebName;
Response.ContentEncoding = System.Text.UTF8Encoding.UTF8;
Response.AppendHeader("Content-Length", file.Length.ToString());
Response.AppendHeader("Pragma","cache");
Response.AppendHeader("Expires", "60");
Response.ContentType = GetContentType(file.Extension);
Response.AppendHeader("Content-Disposition",
"inline; " +
"filename=\"" + file.Name + "\"; " +
"size=" + file.Length.ToString() + "; " +
"creation-date=" + DateTime.Now.ToString("R") + "; " +
"modification-date=" + DateTime.Now.ToString("R") + "; " +
"read-date=" + DateTime.Now.ToString("R"));
My GetContentType() phương pháp chỉ trả về kiểu tập tin thích hợp cho các tập tin tôi là cho phép "application/pdf, application/msw0rd vv
Vấn đề của tôi là khi các tập tin được lưu, đó là trang web của chính nó, không phải là tập tin từ hệ thống tập tin. Và trong google chrome, nó đặt một phần mở rộng .htm ở cuối tên tập tin, tôi đoán bởi vì nó biết đó là một trang web? bước sẽ là để có được các tập tin thực tế, và không phải là một bản sao của trang web trong HTML họ đang ngồi trên!
Cảm ơn.