สอบถามเรื่องการ upload file ลง database โดยตรง

  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.
  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.

อยากทำการ upload file ลง database โดยตรงนะครับ

ไม่ได้เก็บเป็น file directory ลอง search ได้ซักพักแล้ว

ก็ไม่เวิร์ค ติดปัญหาตรง mime type ด้วยครับ งงๆ ว่าคืออะไร

เพราะไฟล์ที่จะอัพโหลดบังคับให้เป็นแค่ ไฟล์ .pdf นะครับ

อ๋อ ผมกรองไฟล์ให้ upload ได้้แค่ .pdf แล้วนะครับ

แต่ที่ดูๆ มาเป็น image หมดเลย

ขอคำแนะนำด้วยครับ มี controller code คร่าวๆ ก็ดีนะครับ ขอบคุณครับ

apirak's picture

ไม่รู้วิธีอ่ะครับ แต่อยากรู้ว่าทำไมถึงอยากเอาเข้า DB โดยตรง??

Apirak

เห็นว่า security ดีกว่า นะครับเลยอยากทดลองดู

Ruby on new Rails(user) >.<

apirak's picture

Secure ดีกว่า... หมายถึงถ้ามีคน hack เข้ามาใน server เค้าก็จะไม่ได้ไฟล์ไปใช่ป่ะ เพราะมันอยู่ใน db และใส่ password ไว้ ?? หรือไม่ก็ให้ db เข้าระหัสไว้ให้ จะได้เอาออกมายากเป็นหลายเท่า ประมาณนี้หรือเปล่า

น่าสนใจนะ แต่ผมว่าเก็บเป็นไฟล์ แล้วเข้าระหัสตั้งแต่ file system ไปเลยก็ดี (ไม่รู้กระบวนการ แต่บน mac มัน set ได้ น่าจะเป็นเรื่องปกติของ unix) แบบว่าถ้ามีคนทุบหัวเราแล้วแย่ง HD ไปก็ไม่สามารถดูข้อมูลได้ เพราะไฟล์มันเข้ารหัสไว้ แต่ต้องไป enable FileVault ไว้ก่อน

ไม่รู้ว่าอ่าน/เขียนผ่าน DB แล้วมันจะเร็วกว่าอ่าน/เขียน ตรงๆ ไปที่ file system หรือเปล่า ??

Apirak

sugree's picture

file system น่าจะเร็วกว่านะ อืม แต่ก็อาจนำพาปัญหาใหม่เข้ามาตอนที่เอาไฟล์ไปกองไว้ที่เดียวกันหมด คราวนี้ช้ากว่าแน่ ต้องกระจายกันเก็บแล้วจะดีเอง

ถ้ามีหลายเครื่องแล้วเก็บใน database อาจจะง่ายกว่า

เวลาที่ browser ติดต่อกับ server
ในส่วนของ response ที่ server ตอบกลับมา จะมี header ที่ระบุ
ประเภท content-type มาด้วยว่า ข้อมูลที่ส่งกลับมี type เป็นอะไร
อย่าง html ปกติก็มี type เป็น 'text/html'
พวก pdf ก็มี type เป็น 'application/pdf'
ซึ่ง browser จะใช้ข้อมูล content-type เป็นตัวตัดสินใจว่า
จะทำอะไรกับข้อมูลที่ส่งกลับมาดี

ดังนั้น action download ใน controller ของเรา
เวลาจะส่งกลับก็ต้อง assign type ให้ถูกต้องด้วย

  def download
    u = Upload.find(params[:id])
    send_data u.file, :file_name => u.name, :type => 'application/pdf'
  end

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น