2012-05-14 56 views
8

Tôi đang cố gắng để có một trang web có một nút buộc tải xuống bản pdf.Sử dụng php để bắt buộc tải xuống bản pdf

Heres html của nút:

<a href=scripts/download.php> 
    <input type="image" src="images/download.gif" alt="Submit button"/> 
    </a> 

Và kịch bản php cho đến nay:

<?php 
    header('Content-Type: application/pdf'); 
    header('Content-disposition: attachment;filename=documents/ECM_IT_ResumeDownload.pdf'); 
    readfile('documents/ECM_IT_ResumeDownload.pdf'); 
    ?> 

Điều này dường như tải file tốt nhưng khi tôi đi để mở nó tôi nhận được lỗi này :

"Adobe Reader không thể mở 'tài liệu_ECM_IT_ResumeDownload.pdf' vì đó không phải là loại tệp được hỗ trợ hoặc do tệp đã bị hỏng (ví dụ: tệp đã được gửi dưới dạng email tệp đính kèm và không được giải mã chính xác). "

Mọi trợ giúp sẽ được đánh giá cao.

EDIT Khai trương pdf trong một trình soạn thảo văn bản và nhận tin nhắn này:

"
Cảnh báo: readfile (tài liệu/ECM_IT_ResumeDownload.pdf) [function.readfile]: thất bại trong việc mở dòng: không có tập tin hoặc thư mục trong html/script/download.php trên dòng
"tài liệu

là definit ely mặc dù có. trong html/tài liệu/ECM_IT_ResumeDownload.pdf

+2

Đóng gói thẻ đầu vào trong thẻ liên kết là số lẻ – Ben

+0

Rất có thể một số thứ đang khiến đầu ra bao gồm một số nội dung pdf không hợp lệ .. có thể máy chủ đang phát một lỗi. Hãy thử để mở tập tin kết quả trong một trình soạn thảo văn bản – Ben

+0

Ahh tôi đã không nhận thấy rằng, tôi đã làm điều đó cho một liên kết nhưng không thông báo tôi vẫn có rằng –

Trả lời

2

Các bạn đã thử loại bỏ các thẻ đóng PHP (các>) cuối cùng? Nó sẽ coi trang đó là một trang PHP thuần túy, loại bỏ bất kỳ dòng mới nào có thể vô tình được thêm vào cuối đầu ra. Điều này đã giúp tôi khi tôi đã tự động tạo các tệp excel để tải xuống và chúng đã tải xuống dưới dạng bị hỏng. Kiểm tra trang này để biết thêm thông tin:

http://www.php.net/manual/en/language.basic-syntax.phptags.php

Từ câu hỏi đã chỉnh sửa của bạn, nó có vẻ như PHP là không thể tìm thấy các tập tin. Hãy thử sử dụng đường dẫn tuyệt đối tới tệp như sau: "c: \ blah \ de \ blah \ bloo.pdf" hoặc "c: /blah/de/blah/bloo.pdf". Nếu một trong những đường dẫn đó hoạt động và tải xuống chính xác, đường dẫn tương đối của bạn không chính xác theo một cách nào đó.

+0

Thats một cái gì đó tôi didnt biết, tôi nghĩ rằng bạn luôn luôn phải đóng chúng Nhưng nó không giải quyết vấn đề tiếc là –

+2

Hãy thử một đường dẫn tuyệt đối trong readfile() gọi: "c: /html/downloads/ECM_IT_ResumeDownload.pdf" hoặc bất cứ điều gì . – abelito

+0

Điều đó đã làm các trick nhờ :) –

4

Hãy thử loại bỏ các đường dẫn đến tập tin và chỉ để lại tên tập tin trong nội dung:

header('Content-Type: application/pdf'); 
header('Content-disposition: attachment; filename=ECM_IT_ResumeDownload.pdf'); 
+0

Vẫn gặp lỗi tương tự. –

18
$file_url = www.example.com/pdffolder/$pdfname; 
header('Content-Type: application/pdf'); 
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=".$pdfname); 
readfile($file_url); 
0

Bằng cách này, hơi muộn, nhưng để xác định các vấn đề đúng đây:

kịch bản tải về của bạn tại số scripts/download.php và tệp bạn muốn tải xuống ở số documents/[...].pdf.

Do đó, chức năng readfile() của bạn phải được chuyển đến thư mục chính (bên ngoài scripts/), ví dụ: readfile('../documents/[...].pdf');.

Các vấn đề liên quan