2009-07-30 13 views
11

Tôi đang làm hình ảnh tải lên trong Asp.net và tôi cho mã theo điều khiển của tôi sau đây:Phương pháp SaveAs được cấu hình để yêu cầu một con đường bắt nguồn từ, và con đường 'fp' không được bắt nguồn từ

string st; 
    st = tt.PostedFile.FileName; 
    Int32 a; 
    a = st.LastIndexOf("\\"); 
    string fn; 
    fn = st.Substring(a + 1); 
    string fp; 
    fp = Server.MapPath(" "); 
    fp = fp + "\\"; 
    fp = fp + fn; 
    tt.PostedFile.SaveAs("fp"); 

Nhưng trong khi tải lên hoặc lưu hình ảnh, thông báo lỗi đến rằng phương thức SaveAs được cấu hình để yêu cầu đường dẫn gốc và đường dẫn 'fp' không được bắt nguồn. Vì vậy, hãy giúp tôi vấn đề

+0

Ra quan tâm, tại sao có bạn chia mã có thể dễ dàng được thể hiện trong 5 dòng thành 11? Tại sao khai báo một biến và chỉ gán nó vào dòng tiếp theo? –

+1

Ngoài ra hãy xem System.IO.Path để thao tác các tên tệp. –

Trả lời

25

Tôi nghi ngờ vấn đề là bạn đang sử dụng chuỗi "fp" thay vì biến số fp. Dưới đây là mã cố định, cũng thực hiện (IMO) dễ đọc hơn:

string filename = tt.PostedFile.FileName; 
int lastSlash = filename.LastIndexOf("\\"); 
string trailingPath = filename.Substring(lastSlash + 1); 
string fullPath = Server.MapPath(" ") + "\\" + trailingPath; 
tt.PostedFile.SaveAs(fullPath); 

Bạn cũng nên xem xét thay đổi dòng áp chót để:

string fullPath = Path.Combine(Server.MapPath(" "), trailingPath); 

Bạn cũng có thể muốn xem xét những gì sẽ xảy ra nếu các tập tin đăng tải được sử dụng/thay vì \ trong tên tệp ... chẳng hạn như nếu nó được đăng từ Linux. Trong thực tế, bạn có thể thay đổi toàn bộ ba dòng đầu tiên:

string trailingPath = Path.GetFileName(tt.PostedFile.FileName)); 

Kết hợp này, chúng ta sẽ nhận được:

string trailingPath = Path.GetFileName(tt.PostedFile.FileName)); 
string fullPath = Path.Combine(Server.MapPath(" "), trailingPath); 
tt.PostedFile.SaveAs(fullPath); 

sạch hơn nhiều, IMO :)

+0

Cảm ơn ông bây giờ không có lỗi là có nhưng khi tôi gỡ lỗi hình ảnh không được hiển thị trong GridView. –

+0

Không biết bạn đang làm gì, thật khó để giúp bạn. Tôi đề nghị bạn hỏi một câu hỏi khác với nhiều thông tin hơn. –

+0

Tôi đã xem GridView ở chế độ xem thiết kế và trong đó tôi có 2 tên coloum, lớp học, hình ảnh. Vì vậy, đối với hình ảnh tôi có fileuploader trong Edititemtemplate cũng như trong fottertemplate. Nhưng thưa ông khi tôi tải lên bất kỳ hình ảnh không có lỗi nhưng hình ảnh không được hiển thị, cùng một vấn đề trong khi cập nhật. Tôi đang cung cấp nguồn hình ảnh (itemtemplate) mã này - Phương thức SaveAs được cấu hình để yêu cầu đường dẫn gốc, và đường dẫn '~ \\ images \\ 594083964.jpg' không bắt nguồn từ

  • 2. Chặn mọi yêu cầu bắt nguồn từ một trang web
  • 3. Bắt nguồn từ một lớp có Chú thích @PostConstruct
  • 4. được đối tượng hình ảnh từ con đường tên
  • 5. Ruby on Rails nguồn Nested không xác định con đường
  • 6. Đa hình: Bắt nguồn từ một thành viên được bảo vệ trong một lớp cơ sở?
  • 7. Làm cách nào để biết một TClass có được bắt nguồn từ cái khác không?
  • 8. Nguồn từ thư mục con trong Makefile
  • 9. Java - Độ chính xác của đường con subpixel có yêu cầu một AffineTransform không?
  • 10. Android Eclipse DDMS - Không thể kéo tệp từ thiết bị được bắt nguồn từ
  • 11. Python: Bắt giá trị baseclass từ lớp có nguồn gốc
  • 12. yêu cầu tệp nội dung từ thư mục con của đường dẫn nội dung
  • 13. Tokenizer, Stop Word Removal, bắt nguồn từ Java
  • 14. WPF DataTemplateSelector.SelectTemplate không được gọi cho kiểu bắt nguồn ContentControl
  • 15. Bắt buộc một trường không được yêu cầu
  • 16. Tạo tuyến đường với một con đường bắt buộc tiền tố
  • 17. Bắt một 'nguồn: không tìm thấy' lỗi khi sử dụng nguồn trong một kịch bản bash
  • 18. Tại sao một Struct không thể bắt nguồn từ cấu trúc khác?
  • 19. Lớp trừu tượng bắt nguồn từ lớp không trừu tượng
  • 20. Node.js: lấy đường dẫn từ yêu cầu
  • 21. Android nhận đường dẫn nguồn video từ VideoView
  • 22. Con trỏ tới mảng lớp cơ sở, với lớp bắt nguồn
  • 23. Tại sao một loại được ném hoặc bị bắt nguồn từ System.Exception
  • 24. Ứng dụng Android không được chạy trên các thiết bị bắt nguồn từ
  • 25. Nguồn gốc yêu cầu POST
  • 26. Làm thế nào để sử dụng biến con đường thay vì request parameter với AngularJS $ nguồn
  • 27. Bắt con đường logic trong VIM khi có một liên kết tượng trưng
  • 28. Tạo một "nguồn cấp dữ liệu" từ nhiều mô hình đường ray, hiệu quả?
  • 29. Bắt python 'ImportError' nếu nhập từ thư mục nguồn
  • 30. C - Bắt đầu một dự án lớn. Cấu trúc và tên tệp/thư mục. Ví dụ tốt được yêu cầu