|
|
|
รบกวนท่านที่ใช้ codeigniter + uploadify ให้คำแนะนำหน่อยครับผม |
|
|
|
|
|
|
|
ตอนนี้ผมสามารถอัพโหลดไฟล์ภาพลงโฟลเดอร์ใน server ได้แล้วครับ แต่ผมต้องการเก็บชื่อไฟล์ลงใน db ด้วยอ่ะครับผม
code ผมประมาณนี้ครับ
ส่วน view
Code (JavaScript)
var str = "<tr><td><input type='file' name='test_file1' id='test_file1'>TEST_1</td></tr>\
<tr><td><button id='upload_ins_btn' onclick='upload_ins();'>UPLOAD</button>";
$('#ins_evidence_table').html(str);
$('#upload_ins_btn').button();
$('#test_file1').uploadify({
'debug' : false,
'auto' : false,
'removeCompleted' : false,
'fileTypeExts' : '*.gif; *.jpg; *.png',
'swf' : $('#site_url').val() + "../assets/modules/stm/image/uploadify.swf",
'uploader' : $('#site_url').val() + "stm/testUpload"
});
อันนี้ controller
Code (PHP)
public function testUpload()
{
$targetFolder = '/bpi/assets/modules/stm/image/ins_evidence'; // Relative to the root
if (!empty($_FILES))
{
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];
// Validate the file type
$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);
if (in_array($fileParts['extension'],$fileTypes)) {
move_uploaded_file($tempFile,$targetFile);
echo '1';
} else {
echo 'Invalid file type.';
}
}
}
คือผมต้องการส่ง ชื่อไฟล์ไปให้ function ใน model ทำการ insert ลง db อ่ะครับผม ผมต้องทำยังไงได้บ้างครับ
ค้น ๆจาก google ดุแล้วงง ๆครับผม
Tag : PHP, Oracle, HTML/CSS, JavaScript, Ajax, jQuery
|
|
|
|
|
|
Date :
2012-07-27 14:46:41 |
By :
kobbeau |
View :
2061 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าใช้ Codeigniter และต้องการอัพโหลด บวกกับต้องการความปลอดภัยด้วย
อย่าใช้การอัพโหลดผ่าน flash เพราะมันจะได้ค่า mime type ที่ไม่ตรงในบางเบราเซอร์ เช่น firefox
และ flash ส่งค่าป้องกัน csrf ไม่ได้
แนะนำให้ใช้ html5 upload ได้ทั้งแบบลากวาง และแบบกำหนดค่า multiple="" ลงใน input file
|
|
|
|
|
Date :
2012-07-27 23:52:09 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเป็นผมนะ ผมใช้วิธีการ ดึงค่าที่ต้องการทั้งหมดที่จะ insert มาอยู่ใน controller ก่อน แล้วค่อยส่งให้ model เป็นตัวจัดการกับฐานข้อมูล พอส่งไปทำแล้วค่อยมีการแจ้งเตือนว่าได้หรือไม่ได้ หรือลองศึกษา ที่นี่ครับ http://codeigniter.com/user_guide/libraries/file_uploading.html เรื่อง File Uploading Class ครับ
|
|
|
|
|
Date :
2012-07-28 08:33:02 |
By :
slurpee55555 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณทุกท่านมากครับสำหรับคำแนะนำครับผม สำหรับท่านที่แนะนำให้ลองวิธีอื่นก็ขอบคุณมากเลยครับ
แต่ตอนนี้เนื่องด้วยเวลาผมมีจำกัด จึงอยากทำให้ได้ด้วยตัวนี้ก่อนอ่ะครับผม นอกจากว่าจะไม่ได้จริง ๆ ก็คงต้องเปลี่ยน
แต่กลัวมีปัญหาเรื่อง time frame ของงานอ่ะครับผม
พอดีผมลองโยน $_FILES['Filedata']['name'] เข้าไป query ใน model ดูน่ะครับ
ความจริงมันควรจะเก็บเป็นชื่อไฟล์ ลง DB แต่มันดันขึ้นมาว่า HTTP Error (500) บน progress bar อ่ะครับผม
แต่ภาพที่ทำการ upload กลับถูกอัพขึ้นไปใน server ได้ครับ งงมากเลยครับ
แล้วตัว button_image_url มันคืออะไรหรอครับ ผมลองใช้ function debug ของ uploadify ดู
เห็นมันเรียก path ผิดอ่ะครับ มันเรียก
button_image_url : /bpi/index.php/stm/page/1/
ซึ่งจริง ๆแล้วน่าจะเป็น
button_image_url : /bpi/index.php/stm/page/1/insurance
แล้วเวลาผมเช็คใน firebug มันขึ้น
error :"NetworkError: 500 Internal Server Error - hostname/bpi/index.php/stm/page/1/"
ตัวนี้มาอ่ะครับ หามา 3 วันแล้วไม่รู้เป็นที่อะไร แต่มันอัพโหลดภาพขึ้น host ได้นะครับ ทั้งที่มี error นี้ แต่เอา $_FILES['Filedata']['name']
ไป query ไม่ผ่าน งงมากเลยครับ ช่วยด้วยครับ T^T
Code ที่เพิ่มใน function controller ครับ
public function testUpload()
{
$targetFolder = '/bpi/assets/modules/stm/image/ins_evidence'; // Relative to the root
if (!empty($_FILES))
{
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];
$data = array('img_name' => $_FILES['Filedata']['name']); // <--แทรกบรรทัดนี้เพิ่มครับ
// Validate the file type
$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);
if (in_array($fileParts['extension'],$fileTypes)) {
move_uploaded_file($tempFile,$targetFile);
echo $this->stm->insert_ins_img($data); // <--แทรกบรรทัดนี้เพิ่มครับ
} else {
echo 'Invalid file type.';
}
}
}
Code ส่วน model ที่ query ชื่อไฟล์ลง DB
function insert_ins_img($data)
{
$query_str = "INSERT INTO AFFAIRS_EVIDENCE_INS_IMG(INS_IMAGES,EVIDENCE_INS_TYPE,WITHDRAW_FK)
VALUES(".$data['img_name'].",'3','3')";
$query = $this->db->query($query_str);
return json_encode($query);
}
|
ประวัติการแก้ไข 2012-07-31 11:57:58 2012-07-31 12:06:06
|
|
|
|
Date :
2012-07-31 11:50:58 |
By :
kobbeau |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนนี้ทำ insert ได้แล้วครับผม เหลือแต่ bug ตัวนี้ครับ
button_image_url มันคืออะไรหรอครับ ผมลองใช้ function debug ของ uploadify ดู
เห็นมันเรียก path ผิดอ่ะครับ มันเรียก
button_image_url : /bpi/index.php/stm/page/1/
ซึ่งจริง ๆแล้วน่าจะเป็น
button_image_url : /bpi/index.php/stm/page/1/insurance
แล้วเวลาผมเช็คใน firebug มันขึ้น
error :"NetworkError: 500 Internal Server Error - hostname/bpi/index.php/stm/page/1/"
|
|
|
|
|
Date :
2012-07-31 15:03:47 |
By :
kobbeau |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|