Tags:

สวัสดีครับ พอดีผมได้รับมอบหมายงานให้หาข้อผิดพลาดของโปรแกรม เป็นเว็บแอพนะครับ คือในแอพจะโหลดไฟล์ 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

รบกวนด้วยนะครับ ถ้าต้องการอะไรเพิ่มเติมบอกได้นะครับ ขอบคุณล่วงหน้าครับ

Get latest news from Blognone
By: osmiumwo1f
ContributorWindows PhoneWindows
on 8 November 2014 - 21:29 #762085
osmiumwo1f's picture

ไฟล์ PDF ที่ว่าเป็นไฟล์ที่มีอยู่แล้วและไม่ได้สร้างขึ้นมาในภายหลังใช่หรือเปล่าครับ ถ้าไม่ใช่ผมคิดว่าควรจะต้องมองตั้งแต่ตอนเข้าเว็บจนถึงตอนดาวน์โหลด PDF แล้วหล่ะครับว่ามีส่วนไหนบ้างที่ทำงานแตกต่างจาก PC บ้างครับ อีกวิธีคือดึงเอาไฟล์ .do ออกมา แล้วเปลี่ยนนามสกุลเป็น .pdf แล้วลองเปิดดูครับ

By: mix5003
AndroidUbuntuWindows
on 9 November 2014 - 10:25 #762149

ผมเดาตามที่ผมหาได้จากลิงค์นี้
https://www.drupal.org/node/2101017

อาจจะต้องใส่ Content-Type เป็น application/octet-stream เท่านั้นครับ

ถ้าไม่ได้ ผมแนะนำว่าลองบังคับ filename เป็นประมาณ 1.pdf ดูก่อนครับ ว่า work ไหม

By: wnaruedol
Android
on 9 November 2014 - 21:38 #762238

ขอบคุณทุกคำตอบนะครับ ไฟล์ PDF มีอยู่แล้วครับ และชื่อไฟล์เขาก็กำหนดมาเป็น pattern เดียวกันแล้วครับ

ส่วน content-type รู้สึกว่าตอนนี้จะใช้ application/pdf อยู่ครับ

และก็เท่าที่หาใน stackoverflow เขาให้ลองเปลี่ยน content-disposition ผมลองทั้ง attachment และ inline แล้วก็ไม่ได้ผลครับ

By: mix5003
AndroidUbuntuWindows
on 9 November 2014 - 23:52 #762260

ผมเข้าใจว่าถ้าต้องการบังคับ Download ไม่ใช่เปิดโดย Browser อาจจะต้องใช้ application/octet-stream ครับ

ส่วนที่ผมอยากให้ลองบังคับให้ filename เป็น 1.pdf ดู เพราะถ้ามันได้ แสดงว่าปัญหาน่าจะมาจากชื่อไฟล์นะครับ

ข้างล่่างนี่ เริ่มมั่วมาและ
แล้วก็ลองใส่ Content-Length ดูครับ อาจจะช่วยได้ (มั้ง)

ถ้าไม่ได้ลองเปลี่ยนเป็น TIS620 เป็น UTF-8 ก่อนแล้วลองโหลดใหม่ดูครับ บางทีมันอาจจะเปลี่ยนเป็น UTF-8 ให้แล้วก็ได้ครับ

By: wnaruedol
Android
on 10 November 2014 - 14:24 #762388

ผมลองเปลี่ยนเป็น application/octet-stream แล้วก็ไม่ได้ผลอะครับ

ผมลองใช้โทรศัพท์เพื่อนที่เป็น windows phone กับ ios โหลดมามันก็เป็นนามสกุล .pdf แต่ถ้าใช้ android มันจะเป็น .do แต่เมื่อเทียบกันแล้วมันคือไฟล์เดียวกัน ชื่อเดียวกัน ดูจากขนาดไฟล์มันก็เท่ากัน แล้ว

ส่วน TIS620 ผมลอง debug แล้วมันไม่เข้าเงื่อนไขที่มี unicode ดังกล่าว จึงคิดว่าไม่น่าเกี่ยวครับ

ส่วน content-length ผมไม่ทราบว่าต้องแก้ตรงไหนครับ

By: wnaruedol
Android
on 12 November 2014 - 09:35 #762989

ตอนนี้ผมแก้ให้โหลดโดยใช้ firefox for android ได้แล้วครับ แต่ยังติดตรงแอพ Chrome (ติดตรงแถบดาวน์โหลดสีฟ้า และชื่อไฟล์กลายเป็น <ไม่มีชื่อเรื่อง>) กับแอพรูปโลก (ติดตรงแถบดาวน์โหลดสีฟ้าเช่นกัน ชื่อไฟล์เป็นคำว่า franchiseStatement) ครับ คิดไม่ออกจริงๆว่าทำไมถึงเป็นอย่างนั้น