··조회 22,386
파일업로드시 용량제한하기
//파일 업로드 함수
function upload(&$file,$limit_file_size)
{
//업로드 파일 제한 크기를 초과하였는지 확인
if ($file[size] > $limit_file_size)
{
//파일의 크기를 아래의 단위로 표시합니다.
$unit=Array("Bytes", "KB", "MB", "GB");
for ($i=0; $limit_file_size>=1024; $limit_file_size>>=10, $i++);
$file_size = sprintf("%d $unit[$i]", $limit_file_size);
MsgBox("업로드 파일 크기 제한 : $file_size");
}
}
if ($HTTP_POST_FILES[upfile][name]) $upfile_name=upload($HTTP_POST_FILES[upfile],50*1024);
위소스를 insert.php에 추가하여 적용하였는데 잘 되지가않네요... 원리를 생각하면 위의 소스가 맞는것같은데 원리는 조금 알겠는데.. 왜 안되는지는 모르겠네요.. 첨에오류나서 이것저것 수정해서 오류는 안나는데.. 포기할까하다가.이렇게 질문올립니다.
업로드파일용량제한을 적용하고자 이곳저곳 돌아다니면서 소스를 보다가 ... 위에 소스를 찾아 조금 수정해서 적용하려하는데 잘되지않네요..
뭐 php.ini를 수정하면된다고는하지만 저는 자체서버가 아니라서....휴~ 서버운영자에게 부탁하면된다고하는글들을 보기는했지만 그냥 구현하는 방법을 알고싶어서 이렇게 질문올리니다.
또하나는 업로드된게시물을 글삭제시 업로드된파일을 삭제하려고 이것저것 시도했는데.. 잘모르겟네요.. 제가 보고 수정한소스는 아래인데요
if ($password==$array[password] )
{
$sql = "delete from $board where number=$number ";
$result=mysql_query($sql, $connect);
//첨부된 파일이 있으면 지운다.
if ($array[file_name1]) del_file($array[file_name1]);
}
사실 이해가가지를 않네요.. 테이블에접속해서 넘버값을삭제하고 만약 첨부파일있으면 삭제하라는것같은데 첫번째 if문은이해가가질않아요..
여러번시도해봐도 삭제ㄸ한 되지않네요..
또 어려운질문을 하고 가네요.. 매번 죄송하네요 ㅋㅋ 또 다시 도움 요청할게요...ㅡㅡ 좋운하루되시구요... 부탁드립니다. 위 2개랑 코멘트만조금 수정하면 게시판 끝인데 어렵네요 ㅋㅋㅋ 맘에들게하기란. 영.~~
function upload(&$file,$limit_file_size)
{
//업로드 파일 제한 크기를 초과하였는지 확인
if ($file[size] > $limit_file_size)
{
//파일의 크기를 아래의 단위로 표시합니다.
$unit=Array("Bytes", "KB", "MB", "GB");
for ($i=0; $limit_file_size>=1024; $limit_file_size>>=10, $i++);
$file_size = sprintf("%d $unit[$i]", $limit_file_size);
MsgBox("업로드 파일 크기 제한 : $file_size");
}
}
if ($HTTP_POST_FILES[upfile][name]) $upfile_name=upload($HTTP_POST_FILES[upfile],50*1024);
위소스를 insert.php에 추가하여 적용하였는데 잘 되지가않네요... 원리를 생각하면 위의 소스가 맞는것같은데 원리는 조금 알겠는데.. 왜 안되는지는 모르겠네요.. 첨에오류나서 이것저것 수정해서 오류는 안나는데.. 포기할까하다가.이렇게 질문올립니다.
업로드파일용량제한을 적용하고자 이곳저곳 돌아다니면서 소스를 보다가 ... 위에 소스를 찾아 조금 수정해서 적용하려하는데 잘되지않네요..
뭐 php.ini를 수정하면된다고는하지만 저는 자체서버가 아니라서....휴~ 서버운영자에게 부탁하면된다고하는글들을 보기는했지만 그냥 구현하는 방법을 알고싶어서 이렇게 질문올리니다.
또하나는 업로드된게시물을 글삭제시 업로드된파일을 삭제하려고 이것저것 시도했는데.. 잘모르겟네요.. 제가 보고 수정한소스는 아래인데요
if ($password==$array[password] )
{
$sql = "delete from $board where number=$number ";
$result=mysql_query($sql, $connect);
//첨부된 파일이 있으면 지운다.
if ($array[file_name1]) del_file($array[file_name1]);
}
사실 이해가가지를 않네요.. 테이블에접속해서 넘버값을삭제하고 만약 첨부파일있으면 삭제하라는것같은데 첫번째 if문은이해가가질않아요..
여러번시도해봐도 삭제ㄸ한 되지않네요..
또 어려운질문을 하고 가네요.. 매번 죄송하네요 ㅋㅋ 또 다시 도움 요청할게요...ㅡㅡ 좋운하루되시구요... 부탁드립니다. 위 2개랑 코멘트만조금 수정하면 게시판 끝인데 어렵네요 ㅋㅋㅋ 맘에들게하기란. 영.~~
댓글 8
if($HTTP_POST_FILES[file1][size] > $limit_file_size) {
echo "용량이 초과 되었습니다";
}
처럼 $HTTP_POST_FILES[file1][size] 내장 변수를 사용해야 합니다.
그리고 파일 크기를 보여주는 소스가 좀 복잡하네요.
그냥 $HTTP_POST_FILES[file1][size]를 출력하면 될텐데요.
가장 근본적인 방법은 php.ini 를 수정하는 것이고, 여기서 설정한 한도 내에서 위의 방법으로 제어할 수 있습니다.
php.ini 한도가 넘어가면 위의 방법은 아무런 소용이 없습니다.
파일을 삭제하시려면,
@unlink($array[file_name1]);
이 함수를 쓰면 됩니다.
@를 앞에 붙인 것은 혹시 오류가 나도 표시하지 말라는 뜻이구요.
좀 더 명확하게 하려면,
if(@file_exists($array[file_name1])) {
@chmod($array[file_name1],0775);
@unlink($array[file_name1]);
}
와 같이 하면 됩니다. 파일이 있으면 권한을 조정하여
지워버리는...
첫번째 if 문이라면 if ($password==$array[password] )
를 말씀하시는 건가요?
입력된 패스워드를 비교하는 거요?
패스워드를 비교해서 맞으면,
우선 DB에 있는 해당 게시물 내용 전체를 삭제하라는 뜻인데.
이건 오히려 별로 어렵지 않은 것 같은데요^^
비밀번호상단에서 확인후에 삭제 맞는데....ㅡㅡ
업로드된 파일은 그대로 있네요.. 부탁드리겠습니다..
정말정말 정말 죄송하네요..ㅋㅋ
<?
//db 연결 부분입니다.
include "connect.php";
//변수
$password = addslashes($password);
//비밀번호가 맞는지 확인합니다.
$sql = "select number from $tablename where number=$number and password='$password'";
$result = mysql_query($sql) or die (mysql_error());
$array = mysql_fetch_array($result);
$msg = "비밀번호가 틀립니다.";
if(mysql_num_rows($result)) { //반환된 열이 있으면...
//삭제합니다.
$sql = "delete from $tablename where number=$number";
mysql_query($sql) or die (mysql_error());
if(@file_exists($array[file_name1])) {
@chmod($array[file_name1],0777);
@unlink($array[file_name1]);
}
$msg = "삭제하였습니다.";
}
//메시지를 출력하고 목록 페이지로 이동합니다.
echo " <html><head>
<script name=javascript>
if('$msg' != '') {
self.window.alert('$msg');
}
location.href='list.php?page=$page';
</script>
</head>
</html> ";
?>
저의 테스트 환경은 target=_blank>http://www.leejinsoo.net/php/list.php
지금 대충 보자면
if(@file_exists($array[file_name1])) {
@chmod($array[file_name1],0777);
@unlink($array[file_name1]);
}
에서
파일 존재 여부를 검사하는데
$array[file_name1] 을 가져오는 곳이 없네요,
위 sql 검색에서 가져온 것이라고는 number 밖에 없습니다.
가져온 값이 없으니 당연히 파일이 존재여부를 검사하지 못할 것이고, 따라서 삭제되지도 않을 것입니다.
select number from $tablename .... 이 부분을
select number, file_name1 $tablename .... 이렇게 바꾸셔야 합니다.
우선 이렇게 해보시죠.
다른 건 괜찮아보입니다.
단번에 되는군요... 참.. 10자도안되는것을 모르고..ㅡㅡ 아직 내공이 부족해서 더욱더 쌓ㅇㅏ야되겠네요.. 정말로 감사드립니다.
주말 즐겁게 보내시기 바랍니다...