Làm cách nào để gửi các tiêu đề Xử lý nội dung trong apache cho các tệp?


8

Tôi có một thư mục chứa các tệp văn bản mà tôi đang phục vụ với apache 2. Thông thường khi tôi (hoặc bất kỳ người dùng nào) truy cập vào các tệp họ thấy chúng trong trình duyệt của họ. Tôi muốn 'buộc' * trình duyệt web bật lên hộp thoại 'Lưu dưới dạng'. Tôi biết điều này có thể làm với các Content-Dispositiontiêu đề ( thông tin thêm ).

Có một số cách để bật nó cho mỗi tập tin?

Lý tưởng nhất là tôi muốn một cái gì đó như thế này:

<Directory textfiles>
   AutoAddContentDispositionHeaders On
</Directory>

Và sau đó apache sẽ đặt tiêu đề bố trí nội dung chính xác, bao gồm sử dụng cùng tên tệp.

Một cái gì đó như thế này có thể có thể với Headerchỉ thị apache .

Điểm thưởng nếu bao gồm bằng cách đứng trong apache trong debian.

Tôi có thể thực hiện một kịch bản trình bao bọc PHP đơn giản có tham filenamesố, thực hiện cuộc gọi đến header(...)và sau đó in tệp, nhưng sau đó tôi phải xác định đầu vào, v.v. đó là công việc tôi đang cố gắng tránh.


* Tôi biết bạn thực sự không thể ép buộc mọi thứ khi nói đến web

Câu trả lời:


11

Tôi đã khám phá ra rằng đây là những gì tôi muốn:

<Location /textfiles>
    SetEnvIf Request_URI "^.*/([^/]*)$" FILENAME=$1
    Header set "Content-disposition" "attachment; filename=%{FILENAME}e"
    UnsetEnv FILENAME
</Location>

"E" ở cuối tên tập tin là gì? Tôi thấy rằng nó không hoạt động mà không có nó, nhưng tôi không hiểu nó làm gì.
Đánh dấu E. Haase

Nó chỉ có nghĩa là "nội dung của biến môi trường có tên FILENAME" (xem tài liệu của mod_headers: httpd.apache.org/docs/civerse/mod/mod_headers.html )
Ale

1

mod_headers nên là những gì bạn đang tìm kiếm:

<IfModule mod_headers.c> 
  <Location ~ ".*/textfiles/.*"> 
    Header set Content-Disposition attachment
  </Location>
</IfModule>

Một khởi đầu tốt, nhưng tôi cũng muốn tên tệp trong đó để nó bật lên tên tệp (giống). Tuy nhiên tôi đã tìm thấy một giải pháp tương tự
Rory
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.