เกี่ยวกับ GAJAX บทที่ 24 GForm อัปโหลดแบบไม่เปลี่ยนหน้าด้วย GAJA

ไม่ทราบว่าเป็นเพราะอะไรครับ ถ้าเป็น ie ตอน alert มันจะเป็นภาษาต่างดาว แต่ถ้า ff อ่านได้ครับ ทั้งที่ ผม save ทุกไฟล์เป็น utf-8 แล้วครับ น่าจะเป็นที่เราไม่สามารถใส่ header ได้หรือป่าวครับ เพราะถ้าใส่ มันจะให้เรา load ไฟล์นั่น ...
04 ส.ค. 2552 3 2,322

ผมก็เคยเจอปัญหานี้ครับ
ผมใช้วิธีบ้านๆครับหน้า upload.phpผมทำแบบนี้ครับ


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<SCRIPT src="gform2_files/gajax.js" type=text/javascript></SCRIPT>
</HEAD>
<BODY>
<?php
    if (!in_array($_FILES[file][type], array('image/pjpeg', 'image/jpeg', 'image/jpg', 'image/gif', 'image/png'))) {
        $ret[] = 'error":"ชนิดของไฟล์ ไม่ถูกต้อง';
    } elseif ($_FILES[file][size] > 200 * 1024) {
        $ret[] = 'error":"ขนาดของไฟล์ มากกว่า 200 kb.';
    } else {
        copy($_FILES[file][tmp_name], 'test.jpg');
        $ret[] = 'error":"อัปโหลดเรียบร้อย';
        $ret[] = 'image":"test.jpg';
    }
    // คืนค่าเป็น JSON
    echo '[{"'.implode('","', $ret).'"}]';
?>
</BODY>
</HTML>
#1

<?php
    header("content-type: text/html; charset=UTF-8");
    if (!in_array($_FILES[file][type], array('image/pjpeg', 'image/jpeg', 'image/jpg', 'image/gif', 'image/png'))) {
        $ret[] = 'error":"ชนิดของไฟล์ ไม่ถูกต้อง';
    } elseif ($_FILES[file][size] > 200 * 1024) {
        $ret[] = 'error":"ขนาดของไฟล์ มากกว่า 200 kb.';
    } else {
        copy($_FILES[file][tmp_name], 'test.jpg');
        $ret[] = 'error":"อัปโหลดเรียบร้อย';
        $ret[] = 'image":"test.jpg';
    }
    // คืนค่าเป็น JSON
    echo '[{"'.implode('","', $ret).'"}]';
?>

หน้ารับไฟล์ เป็น php ครับ ไม่ใช่ HTML
#2


แล้วถ้าต้องการ upload ได้หลายไฟล์ โดย หน้า upload แสดงชื่อไฟล์ได้เรื่อยๆ โดยไม่ reload page แบบ attach file ของ hotmail น่ะค่ะ ต้องทำยังไง


#3
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^