Mã này không làm việc khi nó tìm thấy một none tập tin rỗng némforeach vòng lặp không đúc nhưng thủ công đúc và cho công việc lặp
Không thể cast đối tượng của loại 'System.String' để nhập 'System.Web.HttpPostedFile'.
foreach (System.Web.HttpPostedFile f in Request.Files)
{
if (f.ContentLength > 0 && f.FileName.EndsWith(".pdf"))
{
//work done here
}
}
Ngoài ra tôi kiểm tra từng hạng mục trong Request.Files
mảng một có thể được đúc bằng tay trong chế độ gỡ lỗi như sau (với mỗi chỉ số)
?(System.Web.HttpPostedFile)Request.Files[index]
{System.Web.HttpPostedFile}
ContentLength: 536073
ContentType: "application/pdf"
FileName: "E:\\2.pdf"
InputStream: {System.Web.HttpInputStream}
Tuy nhiên, mã Sau việc
for (index = 0; index < Request.Files.Count; index++)
{
System.Web.HttpPostedFile f = Request.Files[index];
if (f.ContentLength > 0 && f.FileName.EndsWith(".pdf"))
{
//work done here
}
}
Bất kỳ ý tưởng gì đang xảy ra? Cảm ơn
lưu ý: nếu nó * có * là phiên bản chung ('IEnumerable '), thì có một cơ hội tốt trình biên dịch sẽ ngăn cản bạn thực hiện lỗi này; tuy nhiên, tôi giả sử Generics 'HttpFileCollection' trước ngày tháng. –
Sau đó, tại sao nó không thành công khi tệp không rỗng? ví dụ; nếu Request.Files [0] rỗng thì nó không bị lỗi và chuyển sang phần tiếp theo và nếu Request.Files [1] không rỗng thì nó thất bại.(hoặc nó lặp lại cho đến khi nó tìm thấy một mục không trống) – Kaf
@Kaf nếu không có tệp nào, không có gì để lặp lại, do đó không có chuyển đổi không thành công. Trong một tin khác, bạn có thể lặp qua một 'int [] rỗng và chuyển đổi từng' int '(tất cả không có trong số chúng) thành' SqlConnection' và nó sẽ không quan tâm: vì không có gì * lặp lại * . –