파일 저장시 new파일인 경우는 난수를 발생시켜 저장한 후 그 이름을 전달해서 파일의 수정/신규 저장시 기록하고, (임시저장기술 적용) 아닐경우 그 파일을 삭제하는 루틴제작 */ ini_set('display_errors', 1); include "../php/common.php"; isset($_REQUEST["id"]) ? $id=$_REQUEST["id"] : $id=''; isset($_REQUEST["fileorimage"]) ? $fileorimage=$_REQUEST["fileorimage"] : $fileorimage=''; // file or image isset($_REQUEST["item"]) ? $item=$_REQUEST["item"] : $item=''; isset($_REQUEST["upfilename"]) ? $upfilename=$_REQUEST["upfilename"] : $upfilename=''; isset($_REQUEST["tablename"]) ? $tablename=$_REQUEST["tablename"] : $tablename=''; isset($_REQUEST["savetitle"]) ? $savetitle=$_REQUEST["savetitle"] : $savetitle=''; // log기록 저장 타이틀 // var_dump($upfilename); // var_dump($_FILES[$upfilename]['name']); // 파일이 업로드 되었는지 여부와 배열인지 확인 $countfiles = isset($_FILES[$upfilename]['name']) && is_array($_FILES[$upfilename]['name']) ? count($_FILES[$upfilename]['name']) : 0; require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php"); $pdo = db_connect(); // 이미지인 경우 if($fileorimage=='image') { for($i=0;$i<$countfiles;$i++){ $filename = $_FILES[$upfilename]['name'][$i]; if($filename !='') { //Auth key define('UPLOAD_ERR_INI_SIZE',"100000000"); $uploads_dir = '../fileuploads'; //업로드 폴더 상위 fileuploads 폴더선택 $allowed_ext = array('jpg','jpeg','png','gif','JPG','JPEG','PNG','GIF'); //이미지 파일만 허용 //첨부파일이 있다면 $uploadSize = 100000000; @mkdir("$upload_dir", 0707); @chmod("$upload_dir", 0707); // 올라간 파일의 퍼미션을 변경합니다. chmod("$uploads_dir", 0755); // 변수 정리 $error = $_FILES[$upfilename]['name'][$i]; $name = $_FILES[$upfilename]['name'][$i]; $tmpNm = explode( '.', $name ); $ext = strtolower(end($tmpNm)); echo "$ext
"; // 확장자 확인 if( !in_array($ext, $allowed_ext) ) { echo "허용되지 않는 확장자입니다."; exit; } // $newfile=$tmpNm[0].".".$ext ; $new_file_name = date("Y_m_d_H_i_s"); $newfilename1 = $new_file_name."_" . $i . "." . $ext; $url1 = $uploads_dir.'/'.$newfilename1; //올린 파일 명 그대로 복사해라. 시간초 등으로 파일이름 만들기 // 사진회전시키기 // 이미지 로드 및 회전 처리 부분 if ($ext == 'jpg' || $ext == 'jpeg') { // JPEG 이미지인 경우 // $tmpimage = imagecreatefromjpeg($url1); $exif = exif_read_data($url1); print '사진 정보' . $exif['Orientation'] . "
"; if(!empty($exif['Orientation'])) { switch($exif['Orientation']) { case 8: $url1 = imagerotate($url1,90,0); break; case 3: $url1 = imagerotate($url1,180,0); break; case 6: $url1 = imagerotate($url1,-90,0); break; } } //요기부분 수정했습니다. $filename1 = compress_image($_FILES[$upfilename]["tmp_name"][$i], $url1, 70); //실제 파일용량 줄이는 부분 list($width, $height, $type, $attr) = getImagesize($_FILES[$upfilename]["tmp_name"][$i]); if($width > 700){ $switch_s=80; }else{ $switch_s=100; } $buffer = file_get_contents($url1); // 파일 정보 출력 echo "

파일 정보

"; $re_image = new Image($filename1); $rate=$width/$height; if($width>$height) { $re_image -> width(800); $re_image -> height(800/$rate); } else { $re_image -> width(800*$rate); $re_image -> height(800); } $re_image -> save(); // insert try{ $pdo->beginTransaction(); $sql = "insert into " . $DB . ".fileuploads "; $sql .=" (tablename, item, parentid, realname, savename) " ; $sql .=" values(?, ?, ?, ?, ?) " ; $stmh = $pdo->prepare($sql); $stmh->bindValue(1, $tablename, PDO::PARAM_STR); $stmh->bindValue(2, $item, PDO::PARAM_STR); $stmh->bindValue(3, $id, PDO::PARAM_STR); $stmh->bindValue(4, $filename, PDO::PARAM_STR); $stmh->bindValue(5, $newfilename1, PDO::PARAM_STR); $stmh->execute(); $pdo->commit(); } catch (PDOException $Exception) { $pdo->rollBack(); print "오류: ".$Exception->getMessage(); } } elseif ($ext == 'png') { // PNG 이미지인 경우 // $tmpimage = imagecreatefrompng($url1); // PNG 이미지 압축 및 저장 로직 //요기부분 수정했습니다. $filename1 = compress_image($_FILES[$upfilename]["tmp_name"][$i], $url1, 70); //실제 파일용량 줄이는 부분 list($width, $height, $type, $attr) = getImagesize($_FILES[$upfilename]["tmp_name"][$i]); if($width > 700){ $switch_s=80; }else{ $switch_s=100; } $buffer = file_get_contents($url1); // 파일 정보 출력 echo "

파일 정보

"; $re_image = new Image($filename1); $rate=$width/$height; if($width>$height) { $re_image -> width(800); $re_image -> height(800/$rate); } else { $re_image -> width(800*$rate); $re_image -> height(800); } $re_image -> save(); // insert try{ $pdo->beginTransaction(); $sql = "insert into " . $DB . ".fileuploads "; $sql .=" (tablename, item, parentid, realname, savename) " ; $sql .=" values(?, ?, ?, ?, ?) " ; $stmh = $pdo->prepare($sql); $stmh->bindValue(1, $tablename, PDO::PARAM_STR); $stmh->bindValue(2, $item, PDO::PARAM_STR); $stmh->bindValue(3, $id, PDO::PARAM_STR); $stmh->bindValue(4, $filename, PDO::PARAM_STR); $stmh->bindValue(5, $newfilename1, PDO::PARAM_STR); $stmh->execute(); $pdo->commit(); } catch (PDOException $Exception) { $pdo->rollBack(); print "오류: ".$Exception->getMessage(); } } } } // end of for statement } // end of if else { // file인 경우 for($i=0;$i<$countfiles;$i++){ $filename = $_FILES[$upfilename]['name'][$i]; if($filename !='') { //Auth key define('UPLOAD_ERR_INI_SIZE',"100000000"); $uploads_dir = '../fileuploads'; //업로드 폴더 상위 fileuploads 폴더선택 //첨부파일이 있다면 $uploadSize = 100000000; @mkdir("$upload_dir", 0707); @chmod("$upload_dir", 0707); // 올라간 파일의 퍼미션을 변경합니다. chmod("$uploads_dir", 0755); // 변수 정리 $error = $_FILES[$upfilename]['name'][$i]; $name = $_FILES[$upfilename]['name'][$i]; // 파일의 이름 $tmp_file = $_FILES[$upfilename]['tmp_name'][$i]; // 서버에 업로드시 필요함 $tmpNm = explode( '.', $name ); $ext = strtolower(end($tmpNm)); // $newfile=$tmpNm[0].".".$ext ; $new_file_name = date("Y_m_d_H_i_s"); $newfilename1 = $new_file_name."_" . $i . "." . $ext; $url1 = $uploads_dir.'/'.$newfilename1; //올린 파일 명 그대로 복사해라. 시간초 등으로 파일이름 만들기 //서버에 임시로 저장된 파일은 스크립트가 종료되면 사라지므로 파일을 이동해야함. move_uploaded_file($tmp_file, $url1); // insert try{ $pdo->beginTransaction(); $sql = "insert into " . $DB . ".fileuploads "; $sql .=" (tablename, item, parentid, realname, savename) " ; $sql .=" values(?, ?, ?, ?, ?) " ; $stmh = $pdo->prepare($sql); $stmh->bindValue(1, $tablename, PDO::PARAM_STR); $stmh->bindValue(2, $item, PDO::PARAM_STR); $stmh->bindValue(3, $id, PDO::PARAM_STR); $stmh->bindValue(4, $filename, PDO::PARAM_STR); $stmh->bindValue(5, $newfilename1, PDO::PARAM_STR); $stmh->execute(); $pdo->commit(); } catch (PDOException $Exception) { $pdo->rollBack(); print "오류: ".$Exception->getMessage(); } } } // end of for statement } // log 기록 남기기 $data=date("Y-m-d H:i:s") . " - " . $_SESSION["userid"] . " - " . $_SESSION["name"] . " " . $tablename . " " . $savetitle . " - file 기록" ; require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php"); $pdo = db_connect(); $pdo->beginTransaction(); $sql = "insert into " . $DB . ".logdata(data) values(?) " ; $stmh = $pdo->prepare($sql); $stmh->bindValue(1, $data, PDO::PARAM_STR); $stmh->execute(); $pdo->commit(); ?>