php 파일 업로드 관련 질문이있습니다.
본문
업로드 부분 코드는 이렇구요.
혹시 아래 코드에서 $filename 들이 있는데 파일 네임을 정할때 현재 시간+ " _ " + 파일 이름으로 저장시키다 보니 파일명이 한글일때 파일명이 깨져서 들어가더라구요, 그래서 알파벳과 숫자를 합쳐 랜덤으로 파일명을 저장시키고 싶어서 아래의 방식을 사용하여
$aAlphabet = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$nNumber = array('0','1','2','3','4','5','6','7','8','9');
$aTmp = array();
$sConvertName = "";
for($i=0; $i<10; $i++){
array_push($aTmp,$aAlphabet[rand(0,25)]);
array_push($aTmp,$nNumber[rand(0,9)]);
}
foreach($aTmp as $nValue){
//$sConvertName.$nValue;
$sConvertName.=$nValue;
}
$sConvertName;
$filename = time()."_".$i.$_FILES['m_sum']['name'][$key]; 대신에
$filename = $sConvertName; 을 사용하였는데 DB에 파일명을 저장시킬때는 어떻게 해야할지 감이 잘 안와서요..
그리고 제가 파일을 여러개 받아와서 사용하다보니 for문이 많아졌는데 혹시 간단하게 정리할수 있는 방법이 있을까요??
$SAVE_DIR = G5_DATA_PATH."/mon_4/"; //파일1
$i = 0;
foreach($_FILES['m_sum']['name'] as $key => $val){
if($_FILES['m_sum']['size'][$key] > 0){
if($_FILES['m_sum']['error'][$key] === UPLOAD_ERR_OK){
if(is_uploaded_file($_FILES['m_sum']['tmp_name'][$key])){
$filename = time()."_".$i.$_FILES['m_sum']['name'][$key];
move_uploaded_file($_FILES['m_sum']['tmp_name'][$key],$SAVE_DIR.$filename);
}
}
}
$i++;
}//end foreach
$SAVE_DIR2 = G5_DATA_PATH."/mon_4/co_pdf/"; //파일2
$j = 0;
foreach($_FILES['co']['name'] as $key => $val){
if($_FILES['co']['size'][$key] > 0){
if($_FILES['co']['error'][$key] === UPLOAD_ERR_OK){
if(is_uploaded_file($_FILES['co']['tmp_name'][$key])){
$filename = time()."_".$j.$_FILES['co']['name'][$key];
move_uploaded_file($_FILES['co']['tmp_name'][$key],$SAVE_DIR2.$filename);
}
}
}
$j++;
}//end foreach
$SAVE_DIR3 = G5_DATA_PATH."/mon_4/m_pdf/"; //파일3
$k = 0;
foreach($_FILES['un']['name'] as $key => $val){
if($_FILES['un']['size'][$key] > 0){
if($_FILES['un']['error'][$key] === UPLOAD_ERR_OK){
if(is_uploaded_file($_FILES['un']['tmp_name'][$key])){
$filename = time()."_".$k.$_FILES['un']['name'][$key];
move_uploaded_file($_FILES['un']['tmp_name'][$key],$SAVE_DIR3.$filename);
}
}
}
$k++;
}//end foreach
for($i=0;$i<count($week);$i++)
{
$day = "m".date(m);
$m_sum = time()."_".$i.$_FILES["m_sum"]["name"][$i];
$co = time()."_".$i.$_FILES["co"]["name"][$i];
$un = time()."_".$i.$_FILES["un"]["name"][$i];
$sql = "insert into test_table
set week = '{$week[$i]}',
type = '{$type}',
mon = '{$mon}',
ms = '{$ms[$i]}',
m_sum = 'http://test.co.kr/data/mon_4/{$m_sum}',
mo_t = '{$mo_t[$i]}',
mo_url = '{$mo_url[$i]}',
r_t = '{$r_t[$i]}',
r_url = '{$r_url[$i]}',
co_t = '{$co_t[$i]}',
co = 'http://test.co.kr/data/mon_4/co_pdf/{$co}',
un_t = '{$un_t[$i]}',
un = 'http://test.co.kr/data/mon_4/m_pdf/{$un}'";
sql_query($sql) or die (sql_error());
}
답변 2
$i = 0;
foreach ($_FILES as $key2 => $value){
switch ($key2){
case 'm_sum' : $SAVE_DIR = G5_DATA_PATH."/mon_4/";break;
case 'co' : $SAVE_DIR = G5_DATA_PATH."/mon_4/co_pdf/";break; //파일2
case 'un' : $SAVE_DIR = G5_DATA_PATH."/mon_4/m_pdf/";break; //파일3
}
foreach($_FILES[$key2]['name'] as $key => $val){
if($_FILES[$key2]['size'][$key] > 0 &&$_FILES[$key2]['error'][$key] === UPLOAD_ERR_OK && is_uploaded_file($_FILES[$key2]['tmp_name'][$key])){
$filename = time()."_".$i.$_FILES[$key2]['name'][$key];
move_uploaded_file($_FILES[$key2]['tmp_name'][$key],$SAVE_DIR.$filename);
}
}
$i++;
}//end foreach
foreach 부분만 급하게 줄여봤어요
그냥 생각난대로 한거라... 오류가 날지도몰라요..
!-->굳이 저렇게 할 필요가 있을까 싶습니다
G4버젼에서 화일명을 이런 방식으로 변경해서 사용하고 있는데요
이 방법으로 충분 하리라 생각됩니다
for ($i=0; $i<count($_FILES['m_sum'][name]); $i++)
{
$filename = $_FILES['m_sum']['name'][$i];
$filename = $i.time()."_". str_replace('%', '', urlencode(str_replace(' ', '_', $filename)));
답변을 작성하시기 전에 로그인 해주세요.