첨부파일 데이터 저장 채택완료
이용자가 첨부파일을 등록하면 데이터서버에 저장을 하고싶습니다.
현재 코드는 이렇습니다.
</strong></p>
<p><?php</p>
<p>include_once('./_common.php');</p>
<p> </p>
<p>@mkdir(G5_DATA_PATH.'/file/repair_request', G5_DIR_PERMISSION);</p>
<p>@chmod(G5_DATA_PATH.'/file/repair_request', G5_DIR_PERMISSION);</p>
<p>if($_FILES['u_file']) {</p>
<p> $attach = $_FILES['u_file'];</p>
<p> $name = preg_replace("/\.(php|phtm|htm|cgi|pl|exe|jsp|asp|inc)/i", "$0-x", $attach['name']);</p>
<p> $name = substr(md5(uniqid($_SERVER['REQUEST_TIME'])),0,8).'_'.str_replace('%', '', urlencode($name));</p>
<p> $ATTACH_DIR = G5_DATA_PATH.'/file/repair_request';</p>
<p> $dest_file = $ATTACH_DIR.$name;</p>
<p> $url = $ATTACH_DIR.$name;</p>
<p> if(!is_dir($ATTACH_DIR)) {</p>
<p> if(@mkdir($ATTACH_DIR, 0777, true)) {</p>
<p> if(is_dir($ATTACH_DIR)) {</p>
<p> @chmod($ATTACH_DIR, 0777);</p>
<p> }</p>
<p> }</p>
<p> }</p>
<p> if(move_uploaded_file($attach['tmp_name'], $dest_file)) {</p>
<p> $attach_url = $url;</p>
<p> $attach_name = $attach['name'];</p>
<p> $attach_size = $attach['size'];</p>
<p> $attach_type = $attach['type'];</p>
<p> }</p>
<p>}</p>
<p> </p>
<p>$femail = $_POST['femail'];</p>
<p>$temail = $_POST['temail'];</p>
<p>$remail = $_POST['remail'];</p>
<p>$hemail = $_POST['hemail'];</p>
<p>$subject = $_POST['tit'];</p>
<p>$message = $_POST['m_txt'];</p>
<p>$u_name = $_POST['u_name'];</p>
<p>$s_date = $_POST['s_date'];</p>
<p>$add = $_POST['add'];</p>
<p>$u_tel = $_POST['u_tel'];</p>
<p>$b_date = $_POST['b_date'];</p>
<p> </p>
<p>$boundary = "----" . uniqid("part"); // 구분자</p>
<p> </p>
<p>// --- 헤더 --- //</p>
<p>$headers = "Return-Path: ".str_replace("\\", "", $femail)."\r\n";</p>
<p>$headers .= "From: ".str_replace("\\", "", $femail)."\r\n";</p>
<p>if($remail) {</p>
<p> $headers .= "Cc: ".str_replace("\\", "", $remail)."\r\n";</p>
<p>}</p>
<p>if($hemail) {</p>
<p> $headers .= "Bcc: ".str_replace("\\", "", $hemail)."\r\n";</p>
<p>}</p>
<p> </p>
<p>if($attach_url && $attach_name) { // --- 첨부파일 --- //</p>
<p> $filename=$attach_name;</p>
<p> $fp = fopen($attach_url,"r");</p>
<p> $file = fread($fp,$attach_size);</p>
<p> fclose($fp);</p>
<p> if ($attach_type == ""){</p>
<p> $attach_type = "application/octet-stream";</p>
<p> }</p>
<p> // --- 헤더 --- //</p>
<p> $headers .= "MIME-Version: 1.0\r\n";</p>
<p> $headers .= "Content-Type: Multipart/mixed; boundary=\"$boundary\"";</p>
<p> // --- 본문 --- // </p>
<p> $mailbody = "This is a multi-part message in MIME format.\r\n\r\n";</p>
<p> $mailbody .= "--$boundary\r\n";</p>
<p> $mailbody .= "Content-Type: text/html; charset=utf-8\r\n";</p>
<p> $mailbody .= "Content-Transfer-Encoding: base64\r\n\r\n";</p>
<p> $mailbody .= chunk_split(base64_encode(str_replace("\\", "", $s_date. "\r\n" .$add. "\r\n" .$u_name. "\r\n" .$u_tel. "\r\n" .$b_date. "\r\n" .$message))) . "\r\n";</p>
<p> // --- 첨부 --- // </p>
<p> $mailbody .= "--$boundary\r\n"; </p>
<p> $mailbody .= "Content-Type: ".$attach_type."; name=\"".$filename."\"\r\n";</p>
<p> $mailbody .= "Content-Transfer-Encoding: base64\r\n";</p>
<p> $mailbody .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";</p>
<p> $mailbody .= base64_encode($file)."\r\n\r\n";</p>
<p> $mailbody .= "--$boundary--";</p>
<p>}</p>
<p>else {</p>
<p> // --- 헤더 --- // </p>
<p> $headers .= "MIME-Version: 1.0\r\n"; </p>
<p> $headers .= "Content-Type: Multipart/alternative; boundary = \"$boundary\"";</p>
<p> // --- 본문 --- //</p>
<p> $mailbody = "--$boundary\r\n"; </p>
<p> $mailbody .= "Content-Type: text/html; charset=utf-8\r\n";</p>
<p> $mailbody .= "Content-Transfer-Encoding: base64\r\n\r\n";</p>
<p> $mailbody .= chunk_split(base64_encode(str_replace("\\", "", $s_date. "\r\n" .$add. "\r\n" .$u_name. "\r\n" .$u_tel. "\r\n" .$b_date. "\r\n" .$message))) . "\r\n";</p>
<p> $mailbody .= "--$boundary--\r\n\r\n"; </p>
<p>}</p>
<p> </p>
<p>$ret = mail($temail, $subject, $mailbody, $headers);</p>
<p> </p>
<p>if(!$tit || !$u_name|| !$u_tel){</p>
<p> alert('잘못된 접근입니다.');</p>
<p> exit;</p>
<p>}</p>
<p> </p>
<p>$file = "";</p>
<p>
</p>
<p>$sql = "</p>
<p>insert into </p>
<p> repair_request</p>
<p>set</p>
<p> `tit` = '".$tit."' </p>
<p>, `s_date` = '".$s_date."' </p>
<p>, `add` = '".$add."' </p>
<p>, `u_name` = '".$u_name."' </p>
<p>, `u_tel` = '".$u_tel."' </p>
<p>, `b_date` = '".$b_date."' </p>
<p>, `m_txt` = '".$m_txt."' </p>
<p>, `u_pw` = '".$u_pw."' </p>
<p>, `file` = '".$file."' </p>
<p>";</p>
<p> </p>
<p>sql_query($sql);</p>
<p> </p>
<p>$request_idx = sql_insert_id();</p>
<p>$ss_name = 'repair_request_'.$request_idx;</p>
<p>set_session($ss_name, TRUE);</p>
<p> </p>
<p>goto_url("./sub0603.php?idx=".$request_idx);</p>
<p>?></p>
<p> </p>
<p><strong>
답변 2개
데이터 서버는 다른 곳인가요?
</p>
<p> $ATTACH_DIR = G5_DATA_PATH.'/file/repair_request';
$dest_file = $ATTACH_DIR.$name;
$url = $ATTACH_DIR.$name;
if(!is_dir($ATTACH_DIR)) {
if(<a href="//sir.kr/main/member/?mb_id=sterian" class="mention_user_info" target="_blank">@mkdir</a>($ATTACH_DIR, 0777, true)) {
if(is_dir($ATTACH_DIR)) {
@chmod($ATTACH_DIR, 0777);
}
}
}
if(move_uploaded_file($attach['tmp_name'], $dest_file)) {
$attach_url = $url;
$attach_name = $attach['name'];
$attach_size = $attach['size'];
$attach_type = $attach['type'];</p>
<p> // 서버에 저장된 파일을 다른 곳에 올리고 싶다면 여기에서 ftp 함수 사용, 아래 참고</p>
<p> // <a href="https://www.php.net/manual/en/ftp.examples-basic.php" target="_blank" rel="noopener noreferrer">https://www.php.net/manual/en/ftp.examples-basic.php</a></p>
<p> // 다른 정보도 저장하려면 그만큼 코드를 추가시키면 되겠네요.</p>
<p> // 그 외 여러 방법이 있는데 생략</p>
<p> }</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인