PHP Upload ไฟล์เข้า Folder แล้วมันกลายเป็น ภาษาต่างดาวครับ
ผมสร้างหน้าสำหรับ Upload เพลงเก็บไว้ แต่พอ Upload เข้าไปมันเปลี่ยนชื่อเพลงเป็นภาษาต่างดาว (แต่ใน Database ชื่อเพลงยังเหมือนเดิม)
พอใช้ iconv windows-874 หรือ cp936 จะ Upload ไม่ขึ้นเลยครับ
และพอใช้ TIS-620 จะไม่มีชื่อเลยครับ แต่ Upload ขึ้น
Controller
Code (PHP)
$this->check_session();
$username = $this->session->userdata('username');
$attach = '';
//$newList_mq13_filename = str_replace(" ","%_:_%",$music_partname2);
$config['upload_path'] = './uploads/libraries/music';
$config['allowed_types'] = 'mp3|gif|jpg|png|pdf|xml|xlsx|doc|docx';
$config['max_size'] = '0';
$config['overwrite'] = FALSE;
$files = $_FILES;
$cpt = count($_FILES['userfile']['name']);
for($i=0; $i<$cpt; $i++)
{
$music_partname = $files["userfile"]['name'][$i];
$music_partname2 = str_replace(".mp3","",$music_partname);
//$music_partname3 = iconv("UTF-8", "TIS-620", $music_partname2);
//$music_partname3 = iconv("UTF-8", "windows-874", $music_partname);
//$music_partname3 = iconv("UTF-8", "cp936", $music_partname2);
$_FILES['userfile']['name'] = $files["userfile"]['name'][$i];
$_FILES['userfile']['type'] = $files['userfile']['type'][$i];
$_FILES['userfile']['tmp_name'] = $files['userfile']['tmp_name'][$i];
$_FILES['userfile']['error'] = $files['userfile']['error'][$i];
$_FILES['userfile']['size'] = $files['userfile']['size'][$i];
/*echo $_FILES['userfile']['tmp_name'];
echo "<br>";
echo $_FILES['userfile']['name'];*/
$this->load->library('upload', $config);
if($this->upload->do_upload())
{
//$data = array('upload_data' => $this->upload->data());
//echo "It's come!";
$upload = $this->upload->data();
$attach = $upload['file_name'];
$add_music = array(
'mq13_name' => $music_partname2,
'mq13_filename' => $attach,
'mq13_create_by' => $username,
'mq13_create_date' => date('Y-m-d'),
'mq13_create_time' => date('H:i:s')
);
$this->libraries_model->add_music($add_music);
}
else
{
$error = array('error' => $this->upload->display_errors());
echo "ERROR, It's not come!";
}
}
redirect(site_url('main/libraries_music_open'), 'refresh');
ขอขอบคุณล่วงหน้าครับTag : PHP, MySQL, HTML, Ajax, jQuery, CodeIgniter
ประวัติการแก้ไข 2018-03-30 11:10:34 2018-03-30 11:18:02 2018-03-30 11:18:33 2018-03-30 11:22:35
Date :
2018-03-30 11:09:48
By :
zaza3460
View :
1982
Reply :
5
file upload ชื่อเป็นภาษาอังกฤษครับ
หรือ ตัด . ด้วย explode และทำการ rename เป็น $rename=date('YmdHis').'.'.explode[1]; แทน
ประวัติการแก้ไข 2018-03-30 11:45:02
Date :
2018-03-30 11:44:23
By :
dudesaranyu
ขอบคุณครับ @No.1
แล้วถ้าจะโหลดข้อมูลกลับลงมา สามารถเปลี่ยนชื่อกลับได้รึป่าวครับ?
Date :
2018-03-30 13:14:59
By :
zaza3460
คือต้องมองในแง่ความเป็นจริงในการเขียน Program ด้วยครับ ผู้พัฒนาเขียนตัว php ด้วยภาษาอังกฤษ ในการ Upload ก็ควรที่จะเป็นภาษาอังกฤษไปด้วย ยกเว้นพวก Content ต่างๆครับ
Date :
2018-03-30 14:36:50
By :
dudesaranyu
อ่อ ขอบคุณครับ
Date :
2018-03-30 15:26:57
By :
zaza3460
1. เก็บชื่อเพลงด้วย
2. ตอนอัพโหลด เปลื่ยนชื่อเป็นวันเดือนปี random ตัวเลขด้วย หรือ md5 อะไรก็ว่าไป
3. ตอนดาวน์โหลด อ้างอิงไอดี ส่งไปยัง module เช่น download.php ฟังก์ชั่น files
Code (PHP)
public function files($id='') {
$sql="SELECT mq13_name,mq13_filename FROM music WHERE id='{$id}'";
$row=$this->db->query($sql)->row_array();
$files=$row['mq13_filename'];
$filepath = "./uploads/libraries/music/".$files;
if (!file_exists($filepath)) {
throw new Exception("File $filepath does not exist");
}
if (!is_readable($filepath)) {
throw new Exception("File $filepath is not readable");
}
http_response_code(200);
header('Content-Length: '.filesize($filepath));
header("Content-Type: application/pdf");
header('Content-Disposition: attachment; filename="'.$row['mq13_name'].'.mp3"'); //ชนิดไฟล์อะไรก็ว่ากันไป
readfile($filepath);
exit; /
}
Date :
2018-04-19 13:23:23
By :
Pong Thep
Load balance : Server 01