ฟอร์มอัปโหลดส่วนใหญ่รายงานความล้มเหลวทุกแบบด้วยประโยคเดียวกัน ข้อความเดียวนั้นซ่อนการตรวจสอบไว้อย่างน้อยสี่แบบ และแต่ละแบบก็แก้ไม่เหมือนกัน
ข้อที่หนึ่ง: ลิมิตจำนวนไบต์
เป็นลิมิตที่พบบ่อยที่สุด และเป็นข้อเดียวที่คนมักนึกถึง มันวัดเป็นไบต์ ไม่ใช่เมกะพิกเซล ภาพที่ดูเล็ก ๆ ซึ่งถ่ายตรงจากมือถือรุ่นใหม่จึงตกข้อนี้ได้ง่าย ๆ
แก้ด้วยการบีบอัดให้ได้ตัวเลขที่ต่ำกว่าลิมิตที่ประกาศไว้ ไม่ใช่เท่ากับพอดี บางระบบวัดขนาดของคำขอที่เข้ารหัสแล้วแทนที่จะวัดตัวไฟล์ และการอัปโหลดที่ถูกเข้ารหัสเป็น base64 ระหว่างทางจะใหญ่กว่าไฟล์บนดิสก์ราวหนึ่งในสาม การเล็งให้ต่ำกว่าลิมิตสักไม่กี่เปอร์เซ็นต์แทบไม่ทำให้คุณเสียอะไร และตัดคำถามทั้งหมดนี้ทิ้งไปได้เลย
ข้อที่สอง: ลิมิตขนาดภาพ
แยกจากขนาดไฟล์ และบ่อยครั้งไม่มีเขียนบอกไว้ที่ไหน ฟอร์มอาจกำหนดว่าภาพต้องกว้างไม่เกิน 1200 พิกเซล ไม่ว่าไฟล์จะเล็กแค่ไหนก็ตาม การบีบอัดให้หนักขึ้นไม่มีวันทำให้ผ่านข้อนี้ คุณต้องย่อขนาดภาพ ถ้าฟอร์มระบุขนาดที่จะแสดงผลไว้ ปกติมันก็บังคับค่าสูงสุดที่ใกล้เคียงกับตัวเลขนั้นด้วย
ข้อที่สาม: ชนิด MIME
เซิร์ฟเวอร์ที่รอบคอบจะไม่เชื่อนามสกุลไฟล์ มันอ่านไบต์แรก ๆ แล้วระบุฟอร์แมตจากลายเซ็นของไฟล์ ต่อให้เปลี่ยนชื่อ PNG เป็น .jpg เซิร์ฟเวอร์ที่เข้มงวดก็ยังเห็นเป็น PNG อยู่ดี เพราะไบต์มันบอกอย่างนั้น
นี่คือเหตุผลว่าทำไมการแปลงฟอร์แมตถึงได้ผล ส่วนการเปลี่ยนชื่อไม่ได้ผล และเป็นเหตุผลว่าทำไมไฟล์ที่ส่งออกจากโปรแกรมออกแบบในชื่อ “JPEG” ถึงตกได้ ตัวส่งออกบางตัวเขียนไฟล์ออกมาเป็นรูปแบบย่อยที่ไลบรารีของเซิร์ฟเวอร์ไม่ยอมรับ
ข้อที่สี่: ปริภูมิสีและรูปแบบย่อยของการเข้ารหัส
พบน้อยกว่า แต่มีจริง JPEG แบบ CMYK, PNG แบบ 16 บิต และ JPEG แบบโพรเกรสซีฟ ล้วนเป็นไฟล์ที่ถูกต้องทั้งนั้น แต่ไลบรารีฝั่งเซิร์ฟเวอร์รุ่นเก่าบางตัวปฏิเสธทันที
การเข้ารหัสใหม่แก้ได้เท่าที่มันเอื้อมถึง ToolZool ถอดรหัสออกมาเป็นพิกเซล 8 บิตธรรมดา และเขียน JPEG แบบเบสไลน์เป็นค่าเริ่มต้น PNG แบบ 16 บิตจึงกลับออกมาเป็น 8 บิต และ JPEG แบบโพรเกรสซีฟกลับออกมาเป็นเบสไลน์ ซึ่งทั้งคู่คือรูปแบบที่เซิร์ฟเวอร์จู้จี้มีแนวโน้มจะรับมากที่สุด ส่วน JPEG แบบ CMYK เป็นกรณีที่ยุ่งยาก มันเป็นไฟล์สำหรับงานพิมพ์มากกว่างานเว็บ และวิธีแก้ที่ได้ผลแน่นอนคือส่งออกใหม่เป็น RGB จากโปรแกรมที่สร้างมันขึ้นมา
จะแยกแยะทั้งสี่ข้อได้อย่างไร
ลองใช้ภาพทดสอบที่เล็กจนเกินจำเป็นดู ขนาดไม่กี่กิโลไบต์ กว้างไม่กี่ร้อยพิกเซล เป็น JPEG เบสไลน์ธรรมดา ถ้าภาพนั้นอัปโหลดผ่าน แปลว่าปัญหาอยู่ที่ไฟล์ของคุณ และตอนนี้คุณก็รู้แล้วว่าต้องไปแก้ที่แกนไหน เริ่มจากตัวบีบอัด และถ้าลิมิตนั้นบีบมาก การทำให้ภาพเหลือ 50 KB ครอบคลุมลำดับที่ควรลงมือแก้ ถ้าภาพทดสอบก็ตกด้วย ปัญหาอยู่ที่ตัวฟอร์ม เซสชัน หรือเบราว์เซอร์ และการเข้ารหัสใหม่เท่าไรก็ไม่ช่วย

