테스트 사이트 - 개발 중인 베타 버전입니다

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

경하귀요밍 7년 전 조회 2,327

업로드 부분 코드는 이렇구요.

혹시 아래 코드에서  $filename 들이 있는데 파일 네임을 정할때 현재 시간+ " _ " + 파일 이름으로 저장시키다 보니 파일명이 한글일때 파일명이 깨져서 들어가더라구요, 그래서 알파벳과 숫자를 합쳐 랜덤으로 파일명을 저장시키고 싶어서 아래의 방식을 사용하여 

</p>

<p>$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;</p>

<p>

 

$filename = time()."_".$i.$_FILES['m_sum']['name'][$key]; 대신에

$filename = $sConvertName; 을 사용하였는데 DB에 파일명을 저장시킬때는 어떻게 해야할지 감이 잘 안와서요..

그리고 제가 파일을 여러개 받아와서 사용하다보니 for문이 많아졌는데 혹시 간단하게 정리할수 있는 방법이 있을까요??

 

</p>

<p>$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</p>

<p>$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</p>

<p>$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</p>

<p>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];</p>

<p>   $sql = "insert into test_table

   set week = '{$week[$i]}',

   type = '{$type}',

   mon = '{$mon}',

   ms = '{$ms[$i]}',

   m_sum = '<a href="<a href="http://test.co.kr/data/mon_4/" target="_blank" rel="noopener noreferrer">http://test.co.kr/data/mon_4/</a>" target="_blank"><a href="http://test.co.kr/data/mon_4/" target="_blank" rel="noopener noreferrer">http://test.co.kr/data/mon_4/</a></a>{$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 = '<a href="<a href="http://test.co.kr/data/mon_4/co_pdf/" target="_blank" rel="noopener noreferrer">http://test.co.kr/data/mon_4/co_pdf/</a>" target="_blank"><a href="http://test.co.kr/data/mon_4/co_pdf/" target="_blank" rel="noopener noreferrer">http://test.co.kr/data/mon_4/co_pdf/</a></a>{$co}',

   un_t = '{$un_t[$i]}',

   un = '<a href="<a href="http://test.co.kr/data/mon_4/m_pdf/" target="_blank" rel="noopener noreferrer">http://test.co.kr/data/mon_4/m_pdf/</a>" target="_blank"><a href="http://test.co.kr/data/mon_4/m_pdf/" target="_blank" rel="noopener noreferrer">http://test.co.kr/data/mon_4/m_pdf/</a></a>{$un}'";

   sql_query($sql) or die (sql_error());

 }</p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
Policia
7년 전

</p>

<p>$i = 0;</p>

<p>foreach ($_FILES as $key2 => $value){</p>

<p> switch ($key2){</p>

<p>  case 'm_sum' : $SAVE_DIR = G5_DATA_PATH."/mon_4/";break;</p>

<p>  case 'co' : $SAVE_DIR = G5_DATA_PATH."/mon_4/co_pdf/";break; //파일2</p>

<p>  case 'un' : $SAVE_DIR = G5_DATA_PATH."/mon_4/m_pdf/";break; //파일3</p>

<p> }</p>

<p> foreach($_FILES[$key2]['name'] as $key => $val){</p>

<p>  if($_FILES[$key2]['size'][$key] > 0 &&$_FILES[$key2]['error'][$key] === UPLOAD_ERR_OK && is_uploaded_file($_FILES[$key2]['tmp_name'][$key])){</p>

<p>   $filename = time()."_".$i.$_FILES[$key2]['name'][$key];</p>

<p>   move_uploaded_file($_FILES[$key2]['tmp_name'][$key],$SAVE_DIR.$filename);</p>

<p>  }</p>

<p> }</p>

<p> $i++;</p>

<p>}//end foreach</p>

<p>

 

foreach 부분만 급하게 줄여봤어요

그냥 생각난대로 한거라... 오류가 날지도몰라요..

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

7년 전

굳이 저렇게 할 필요가 있을까 싶습니다

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인