Buộc sử dụng tên tệp thực tế


50

Khi sử dụng wgettrong tập lệnh để tải xuống một số tệp từ Google Docs, tên của tệp không được giữ nguyên. Ví dụ:

wget 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls' 

lưu tệp pub?key=pyj6tScZqmEfbZyl0qjbiRQthay vì indicatorhivestimatedprevalence15-49.xls, đó là những gì tôi nhận được nếu nhấp vào liên kết trong trình duyệt. Có cách nào để thực thi hành vi "giống như trình duyệt" này wgetkhông?

Câu trả lời:


90
wget --content-disposition 'http://spreadsheets.google.com/pub?key=pyj6tScZqmEfbZyl0qjbiRQ&output=xls'

sẽ làm các mẹo cho bạn.

Nó vẫn chưa được thực hiện đầy đủ và đôi khi có vẻ hơi lỗi vì vậy nó không phải là tùy chọn mặc định wget, hãy tự chịu rủi ro khi sử dụng nó.


1
Tôi biết...! Đẹp hả ;)
Bruno Pereira

Tôi không thực sự là một lập trình viên web, vì vậy tôi sẽ không bao giờ nghĩ đến việc tìm kiếm cụm từ "bố trí nội dung". Bạn đã lưu tôi phải xem thủ công các tiêu đề HTTP, khám phá tiêu đề xử lý nội dung và xử lý nó.
Chinmay Kanchi

WOW + tuyệt vời. THX u roc ý tốt.
Kangarooo

@BrunoPereira, tôi cũng đang cố tải xuống tệp bảng tính google. Nhưng tôi không thể tìm thấy liên kết cho tập tin. Bạn có thể vui lòng cho biết cách lấy liên kết cho tệp bảng tính google để tôi có thể sử dụng wget theo cách tương tự như Chinmay Kanchi. Cảm ơn trước.
dùng22180

@ChinmayKanchi Tôi tự gọi mình là một lập trình viên 15 năm qua, nhưng khi nói đến điều này, tôi luôn cố gắng và sử dụng một tên có ý nghĩa hơn trong mã.
tishma

3

Bạn có thể thử sử dụng curl để tải xuống và giữ tên tệp gốc:

curl -OJL ${your_url}
  • -O cho tên từ xa
  • -J cho tên tiêu đề từ xa
  • -L cho vị trí

xem các tùy chọn dòng lệnh curl .


0

Liên kết Google Docs thực sự đang cho một tập lệnh trên máy chủ chạy, phân tích cú pháp đó thành tệp bạn muốn. Các tập tin, theo sự hiểu biết tốt nhất của tôi, không tồn tại trên máy chủ ở dạng els, nhưng được tạo ra trong thời gian chạy khi bạn yêu cầu. Vì vậy, không có bất cứ điều gì cho wget để có được.

Để tải xuống tệp, bạn cần sử dụng google API http://code.google.com.vn/apis/document/docs/3.0/developftimeguide_protatio.html#DoadingDocs/ .


Có, máy chủ đang yêu cầu một tập lệnh chạy, nó sẽ tạo .xlstập tin một cách nhanh chóng. Tuy nhiên, một trình duyệt toàn diện không có vấn đề gì với điều này. Vì vậy, rõ ràng là có thể làm mà không cần API Docs.
Chinmay Kanchi

Tôi nghĩ rằng tập lệnh chạy trong trình duyệt sẽ sử dụng API, vì vậy để làm điều đó mà không có trình duyệt, người ta sẽ phải tạo lại tập lệnh. Thật thú vị khi wget có một lá cờ cho nó.
Ethan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.