คือ ผมมีไฟร์ pdf อยู่1 ไฟร์ครับ ต้องการให้มันรันบนหน้าเว็ปอะครับ
และอาจจะมีไฟร์อื่นที่ อาจจะให้โหลดได้อีกอะครับ
ผมใช้ คำสั่ง
render :file => “app/views/po/pdf/po.pdf”
มันเปิด อย่างกะ เปิดไฟร์ ใน text editer เลยครับ
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
ผมคิดว่า .. สิ่งที่คุณต้องการจะทำ น่าจะเป็นอย่างนี้นะครับ:
redirect_to "/public/pdf/po.pdf"แล้วเอาไฟล์ไว้ใน public folder แทน
ถามว่าทำไม .. เพราะว่าจริงๆ แล้วการที่เราคลิ๊กลิงค์ไปยังไฟล์ pdf เนี่ย การที่มันเปิดขึ้นมาในหน้าต่าง browser มันเป็นเพราะว่าเจ้า Adobe Reader มันทำหน้าที่เป็น plugin ใน browser ของเราครับ แค่เราทำการ redirect ไปยังไฟล์ pdf เท่านั้นมันก็น่าจะเปิดใน browser แล้วล่ะครับ ถ้าเราตั้งค่าไว้ถูก :D
ออใช่ หรืออีกอย่างนึง ในหน้าที่จะลิงค์ไปไฟล์ pdf ก็สั่ง
(ไฟล์อยู่ที่ public เหมือนเดิมครับ)
เพื่อที่ให้มันลิงค์ไปยังไฟล์ที่จะเก็บ pdf ก็ได้ครับ :D
redirect_to
ขอบพระคุณท่านอาจารย์อย่างสูงเลยครับ
ถ้าจะทำอย่างนี้ อย่าลืมว่าไฟล์จะต้องอยู่ใน path ที่เข้าถึงได้โดยตรงจาก browser ด้วยนะครับ (เช่น อยู่ใน public/ ) เป็นต้นนะครับ
ถ้าต้องการให้ส่งไฟล์ที่เข้าตรง ๆ ไม่ได้ (เช่นต้อง login ก่อน) สามารถใช้คำสั่ง send_data ใน controller ได้นะครับ แต่ว่าถ้าไฟล์ใหญ่ ๆ มันจะโหลดเข้ามาใน mem ก่อน อาจจะช้าได้
ที่ผมเคยทำผมใช้วิธี X-Sendfile ตามอันนี้น่ะครับ ใช้ได้กับ production ที่รัน mongrel บน apache แต่ต้องลง module xsendfile ที่ apache ก่อนน่ะครับ