2013-05-30 18 views
12

Tôi muốn lưu tệp đã tải lên vào đường dẫn vật lý theo phương pháp HttpPostedFileBase.SaveAs().Lưu tệp đã tải lên với HttpPostedFileBase.SaveAs trong đường dẫn vật lý

Khi tôi chọn đường dẫn vật lý, ngoại lệ sẽ xuất hiện cho biết rằng đường dẫn phải là ảo.

var fileName = Path.GetFileName(fileurl.FileName); 
var path = "C:/Projets" + fileName; 
fileurl.SaveAs(Server.MapPath(path)); 

Làm cách nào để thay đổi mã của mình để có thể lưu tệp ở mọi nơi tôi muốn?

+0

Tôi không nghĩ điều đó là có thể. IIS chạy ứng dụng của bạn trong một App Pool, nghĩ về nó như một hộp cát. Bạn chỉ có quyền truy cập khu vực đó. – Belogix

+0

@Belogix nhưng làm thế nào tôi có thể thay đổi sự cho phép của processus hồ bơi ứng dụng vì tôi lưu các tập tin trong khu vực đó tôi không có sau đó các điều khoản để xóa nó và thậm chí để tạo một thư mục mới hoặc tập tin tập tin đó – Lamloumi2

Trả lời

18

Server.MapPath chỉ hoạt động với các vị trí thực tế là một phần của trang web. Nếu bạn muốn lưu tệp bên ngoài, bạn có thể sử dụng các thông tin sau:

var fileName = Path.GetFileName(fileurl.FileName); 
fileurl.SaveAs(Path.Combine(@"c:\projects", fileName)); 

Đảm bảo rằng tài khoản mà nhóm ứng dụng của bạn đang thực thi được cấp quyền ghi vào thư mục này.

1

Server.MapPath là dành cho đường dẫn ảo. Bạn có thể thử sử dụng Path.GetFullPath (đường dẫn).