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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
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)));

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

회원로그인

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