2011-10-13 5 views
5

tôi muốn nhận tệp mở rộng của url.lấy phần mở rộng của tệp (chỉnh sửa)

ví dụ lấy tiện ích http://www.iranfairco.com/download-file/02912bb889cb24. nếu mở rộng tệp này là gif.

EDIT:

ví dụ url này "http://www.online-convert.com/result/d8b423c3cbc05000cc52ce7015873e72"

Xin hãy giúp tôi làm thế nào có thể nhận được phần mở rộng của url này?

+6

tôi thấy không có gì ở đây chỉ ra gif. Url không chứa '.gif' và yêu cầu http trả về 404. – CodesInChaos

Trả lời

10

Tại sao Path.GetExtension không hoạt động cho bạn?

EDIT
Ah, do đó, url của bạn không chỉ định tiện ích mở rộng bạn đang theo dõi. Điều đó có nghĩa là mọi thứ có thể ở đằng sau nó.

Chỉ bằng cách kiểm tra giá trị chuỗi của url, bạn không thể thấy nội dung sẽ nằm sau nó. Điểm ví dụ (thứ hai) của bạn (cuối cùng) thành một tệp .gif, nhưng nó cũng có thể là .jpg, .doc (hoặc thậm chí .exe).

Bạn sẽ cần thực hiện yêu cầu web để xem những gì bạn nhận được. Thông thường, bạn có thể thử HEAD để chỉ lấy tiêu đề (và kiểm tra kiểu nội dung), nhưng tôi không nghĩ rằng nó sẽ hoạt động ở đây. Hãy thử Fiddler để xem những gì bạn nhận được, sau đó bạn có thể tinh chỉnh câu hỏi của bạn.

+0

Điều này có hoạt động trên các url web không? – musefan

+1

'Path.GetExtension (" http://www.someserver.com/image.gif ")' trả về ".gif" –

+0

ah vâng điều đó có hiệu quả, nhưng nó sẽ không cho ví dụ được đưa ra ... Tôi nghĩ bạn đã có tìm thấy một chức năng siêu tuyệt vời sau đó, tôi đã chờ đợi để được rất ấn tượng: D – musefan

0

Bạn chỉ có thể chia chuỗi trên char '.' và nhận được chuỗi cuối cùng trong mảng được trả về ..

+0

không có tên tệp url là hash.filename = 02912bb889cb24 – ashkufaraz

+0

nếu chuỗi không có phần mở rộng tệp trong đó ... ví dụ không – musefan

+0

Không rõ ràng vì ví dụ là một thất bại ... làm thế nào là lỗi của tôi? – Rob

6

Check-out ở đây:

http://www.java2s.com/Code/CSharp/Network/GetHTTPResponseheaders.htm

Bạn sẽ được quan tâm trong Response.ContentType mà nên cung cấp cho bạn một cái gì đó như "image/gif" cho một gif image

+0

Điều đó phụ thuộc vào tiêu đề nội dung đang được đặt. Với thẻ asp.net, tôi tưởng tượng câu trả lời của @Curt là chính xác hơn, và rằng những gì được yêu cầu là thực sự áp dụng một loại nội dung trong asp. – stevenrcfox

+0

@Overflow, tôi biết nó đòi hỏi rằng loại nội dung cần phải được thiết lập bởi máy chủ khi nó xử lý cuộc gọi URL đó.Và giả định của tôi là URL này được sử dụng để cung cấp tải xuống tệp (như được đề xuất trong chính URL) và rất có thể máy chủ sẽ trả về luồng phản hồi chỉ chứa hình ảnh và do đó đã đặt loại nội dung. Tất nhiên, loại nội dung có thể sai và phụ thuộc vào việc triển khai. Nhưng để làm điều đó một cách chính xác, việc thực hiện phải cung cấp loại nội dung chính xác, và do đó câu trả lời của tôi sẽ có thể tìm ra loại tệp – musefan

1

URL này dường như có liên kết đến trang sẽ tải xuống tệp.

02912bb889cb24 có lẽ là tham chiếu cơ sở dữ liệu cho tệp đó.

Do đó mà không cần truy cập vào bất kỳ API cho hệ thống này, tôi không nghĩ rằng nó có thể ở tất cả để làm việc ra các phần mở rộng tập tin cho các tập tin truy cập thông qua URL này

+0

Tôi có xu hướng xem đây là câu trả lời chính xác nhất, với một vài bổ sung, 1. Khi tệp được tải lên, bạn sẽ có thể lấy loại nội dung và lưu nó vào cơ sở dữ liệu với tệp. Sau đó, khi tệp được tải xuống, bạn sẽ có thể đặt lại loại nội dung. – stevenrcfox

4

thử này

string path = @"http://www.iranfairco.com/download-file/02912bb889cb24.gif"; 
string e = Path.GetExtension(path); 
+0

url bằng 29493903 không bằng 290930232.gif – ashkufaraz