สวัสดีครับ พอดีผมได้รับมอบหมายงานให้หาข้อผิดพลาดของโปรแกรม เป็นเว็บแอพนะครับ คือในแอพจะโหลดไฟล์ pdf ได้ ซึ่งก็โหลดได้ปกติหากใช้ PC แต่ถ้าเข้าโทรศัพท์ Android จะพบว่าโหลดไม่ได้ครับ เป็นแค่เว็บนี้เว็บเดียวด้วย ปัญหาคือเวลาโหลดมา ถ้าใช้แอพ Chrome มันจะค้างที่แถบสีฟ้าไม่หยุด และชื่อไฟล์กลายเป็น <ไม่มีชื่อเรื่อง> เลยอยากทราบว่าเป็นเพราะอะไร ผมได้โพสต์ไว้ในเว็บ stackoverflow ด้วยนะครับ โค้ดจะอยู่ในเว็บนี้ครับ
http://stackoverflow.com/questions/26777788/whats-wrong-with-my-code-why-cant-i-download-pdf-files-with-chrome-on-android
รบกวนด้วยนะครับ ถ้าต้องการอะไรเพิ่มเติมบอกได้นะครับ ขอบคุณล่วงหน้าครับ
ไฟล์ PDF ที่ว่าเป็นไฟล์ที่มีอยู่แล้วและไม่ได้สร้างขึ้นมาในภายหลังใช่หรือเปล่าครับ ถ้าไม่ใช่ผมคิดว่าควรจะต้องมองตั้งแต่ตอนเข้าเว็บจนถึงตอนดาวน์โหลด PDF แล้วหล่ะครับว่ามีส่วนไหนบ้างที่ทำงานแตกต่างจาก PC บ้างครับ อีกวิธีคือดึงเอาไฟล์ .do ออกมา แล้วเปลี่ยนนามสกุลเป็น .pdf แล้วลองเปิดดูครับ
ผมเดาตามที่ผมหาได้จากลิงค์นี้
https://www.drupal.org/node/2101017
อาจจะต้องใส่ Content-Type เป็น application/octet-stream เท่านั้นครับ
ถ้าไม่ได้ ผมแนะนำว่าลองบังคับ filename เป็นประมาณ 1.pdf ดูก่อนครับ ว่า work ไหม
ขอบคุณทุกคำตอบนะครับ ไฟล์ PDF มีอยู่แล้วครับ และชื่อไฟล์เขาก็กำหนดมาเป็น pattern เดียวกันแล้วครับ
ส่วน content-type รู้สึกว่าตอนนี้จะใช้ application/pdf อยู่ครับ
และก็เท่าที่หาใน stackoverflow เขาให้ลองเปลี่ยน content-disposition ผมลองทั้ง attachment และ inline แล้วก็ไม่ได้ผลครับ
ผมเข้าใจว่าถ้าต้องการบังคับ Download ไม่ใช่เปิดโดย Browser อาจจะต้องใช้ application/octet-stream ครับ
ส่วนที่ผมอยากให้ลองบังคับให้ filename เป็น 1.pdf ดู เพราะถ้ามันได้ แสดงว่าปัญหาน่าจะมาจากชื่อไฟล์นะครับ
ข้างล่่างนี่ เริ่มมั่วมาและ
แล้วก็ลองใส่ Content-Length ดูครับ อาจจะช่วยได้ (มั้ง)
ถ้าไม่ได้ลองเปลี่ยนเป็น TIS620 เป็น UTF-8 ก่อนแล้วลองโหลดใหม่ดูครับ บางทีมันอาจจะเปลี่ยนเป็น UTF-8 ให้แล้วก็ได้ครับ
ผมลองเปลี่ยนเป็น application/octet-stream แล้วก็ไม่ได้ผลอะครับ
ผมลองใช้โทรศัพท์เพื่อนที่เป็น windows phone กับ ios โหลดมามันก็เป็นนามสกุล .pdf แต่ถ้าใช้ android มันจะเป็น .do แต่เมื่อเทียบกันแล้วมันคือไฟล์เดียวกัน ชื่อเดียวกัน ดูจากขนาดไฟล์มันก็เท่ากัน แล้ว
ส่วน TIS620 ผมลอง debug แล้วมันไม่เข้าเงื่อนไขที่มี unicode ดังกล่าว จึงคิดว่าไม่น่าเกี่ยวครับ
ส่วน content-length ผมไม่ทราบว่าต้องแก้ตรงไหนครับ
ตอนนี้ผมแก้ให้โหลดโดยใช้ firefox for android ได้แล้วครับ แต่ยังติดตรงแอพ Chrome (ติดตรงแถบดาวน์โหลดสีฟ้า และชื่อไฟล์กลายเป็น <ไม่มีชื่อเรื่อง>) กับแอพรูปโลก (ติดตรงแถบดาวน์โหลดสีฟ้าเช่นกัน ชื่อไฟล์เป็นคำว่า franchiseStatement) ครับ คิดไม่ออกจริงๆว่าทำไมถึงเป็นอย่างนั้น