|
|
|
ปัญหาอัพโหลดไฟล์ชื่อเป็นภาษาไทยครับ ชื่อไฟล์ด้านนอกเพี้ยน แต่ในเบสไม่เพี้ยน |
|
|
|
|
|
|
|
แนะนำให้ ระบบตั้งชื่อไฟล์ให้เองนะ โดยให้เป็น ตัวเลขหรือตัวอักษร eng (ป้องกันการซ้ำของไฟล์ได้)
อาจจะทำ $filename=time();
|
|
|
|
|
Date :
2010-01-28 11:57:37 |
By :
onedan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ
ถ้างั้นผมคงต้องเก็บคำอธิบายแยกไว้ซะแล้ว เอาไว้อธิบายไฟล์ตอนแสดงให้ผู้ใช้โหลด
|
|
|
|
|
Date :
2010-01-28 12:04:59 |
By :
mightmagic |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอานี่ไปลองใช้ดูค่ะ
Code (PHP)
<?php
$__tis620 = range(0xa1, 0xff);
$__tis620[] = 0xa0;
array_walk($__tis620, "to_char");
$__utf8 = range(0xe01, 0xe5f);
$__utf8[] = 0xa0;
array_walk($__utf8, "to_unicode");
function tis620_utf8($str) {
global $__tis620, $__utf8;
if (function_exists("array_combine")) {
$str = strtr($str, array_combine($__tis620, $__utf8));
} else {
$str = strtr($str, _array_combine($__tis620, $__utf8));
}
return $str;
}
function utf8_tis620($str) {
global $__tis620, $__utf8;
if (function_exists("array_combine")) {
$str = strtr($str, array_combine($__utf8, $__tis620));
} else {
$str = strtr($str, _array_combine($__utf8, $__tis620));
}
return $str;
}
function to_char(&$item, $key) {
$item = chr($item);
}
function to_unicode(&$item, $key) {
$item = codepoint_utf8($item);
}
function codepoint_utf8($codepoint) {
$ascii = "";
if ($codepoint < 0x80) {
$ascii .= chr($codepoint);
} elseif ($codepoint < 0x800) {
$ascii .= chr(0xc0 | ($codepoint >> 6));
$ascii .= chr(0x80 | ($codepoint & 0x3f));
} elseif ($codepoint < 0x10000) {
$ascii .= chr(0xe0 | ($codepoint >> 12));
$ascii .= chr(0x80 | ($codepoint >> 6 ) & 0x3f);
$ascii .= chr(0x80 | ($codepoint & 0x3f));
} else {
$ascii .= chr(0xf0 | ($codepoint >> 18));
$ascii .= chr(0x80 | ($codepoint >> 12 ) & 0x3f);
$ascii .= chr(0x80 | ($codepoint >> 6 ) & 0x3f);
$ascii .= chr(0x80 | ($codepoint & 0x3f));
}
return $ascii;
}
function _array_combine($k, $v) {
$output = array();
for ($i = 0; $i < count($k); $i++) {
$output[$k[$i]] = $v[$i];
}
return $output;
}
?>
จะใช้อยู่ 2 function คือ tis620_utf8($str) กับ utf8_tis620($str)
ในกรณีของคุณลองใช้ utf8_tis620($str) ดูค่ะ
วิธีเรียกใช้ก็ประมาณนี้ค่ะ
Code (PHP)
move_uploaded_file($_FILES['uploadfile']['tmp_name'], utf8_tis620($file));
ปล.ได้มาจากอินเตอร์เน็ตนานแล้ว จำไม่ได้ว่าจากที่นี่หรือที่ใด ขอเครดิตให้ อากู๋กูเกิล ก็แล้วกันนะคะ อิอิ
|
|
|
|
|
Date :
2010-01-28 14:50:25 |
By :
ultrasiam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุนคับ ช่วยได้เยอะเลยยย
|
|
|
|
|
Date :
2011-01-29 01:30:42 |
By :
kidjy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากค่ะ
|
|
|
|
|
Date :
2011-05-11 14:22:24 |
By :
ok |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองบน Windows ได้ค่ะ
แต่บน Server Linux ก็ไม่ได้อยู่ดีค่ะ
ตัดใจให้เป็น id ไปซะเลย
|
|
|
|
|
Date :
2011-05-11 18:15:44 |
By :
ok |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณ ultrasiam มากครับ
ดีนะเซฟเวอร์ผมเป็น Windows เลยใช้ได้
ขอบคุณมากครับ
|
|
|
|
|
Date :
2013-01-25 11:46:43 |
By :
nuarsenal |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลองมาคิดๆดูนะครับ ถ้า sever ที่เป็น Linux นะ ผมแนะนำให้ตัด สติง หน้า ดอท(.) ออกมาครับ แล้วเปลี่ยนชื่อไฟล์เป็นภาษาอักฤษหรือ ip ก็ได้ครับ
เช่น ไฟล์ชื่อ ทดสอบระบบ.docx
ลองใช้ตามนี้ครับ
$filearray = explode(".",$filename);
พอตัดออกมาแล้วจะได้ array 2 ตัวครับ คือ ทดสอบระบบ และ docx ครับ
ลอง echo ออกมาดูก็ได้นะครับ
$showfilename = $filearray[0];
$showDotFile = $filearray[1];
เราก็นำเอา $showfilename (ทดสอบระบบ) ไปเก็บไว้ในฐานข้อมูลครับ
|
|
|
|
|
Date :
2013-01-25 12:11:19 |
By :
nuarsenal |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|