php 파일 업로드 관련 질문이있습니다.

php 파일 업로드 관련 질문이있습니다.

QA

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)));

답변을 작성하시기 전에 로그인 해주세요.
전체 147
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT