이미지 업로드!! 제발 도와주세요. 정보
그누보드 이미지 업로드!! 제발 도와주세요.첨부파일
본문
며칠전에도 똑같은 글을 올렸는데 그냥 읽어 보시기만 하더라고요.
고수님들 제발 도와주세요.
아래 링크에서 얻은 스킨을 이용해 사용하는데 왜 jpg 만 업로드가 될까여? 기타 이외의 파일을 업로드 하는 방법은 없나요?
잘 하시는 분들 부탁 드립니다.
아래 소스는 gbform.skin.php 파일의 밑에 해당하는 자바스크립트 부분인데 이부분에서 수정을 할꺼 같아 올립니다.
그리고 첨부 파일에는 gbform.skin.php있으니 제발 도와 주세요.
그리고 이 스킨의 원래 출처는
http://www.sir.co.kr/?doc=bbs/gnuboard.php&bo_table=skin3&sselect=ca_id&stext=&page=2&wr_id=8525
입니다,
---------------------------------------------------
<script language='Javascript'>
var f = document.fgbform;
if (f.w.value == "")
AddFile(5);
else
{
<?
$sql = " select max(wf_id) from $file_table where wr_id = '$wr_id' ";
$row = sql_fetch($sql);
$num = $row[0];
$sql = " select * from $file_table
where wr_id = '$wr_id'
order by wf_id ";
$result = sql_query($sql);
?>
AddFile(<?=$num+1?>);
<?
for ($i=0; $i<=$num; $i++)
{
$row = mysql_fetch_array($result);
if (!$row[0])
continue;
//if ($w == "u") echo "f.elements['wf_id_del[$row[wf_id]]'].value = '$row[wf_id]';\n";
echo "f.elements['wf_cont[$row[wf_id]]'].value = '".addslashes($row[wf_cont])."';\n";
$file_name = get_thumb_filename($wr_id, $row[wf_id]);
$file = "./data/file/$bo_table/{$file_name}_s.jpg";
if (file_exists($file))
{
echo "document.images['preview[$row[wf_id]]'].src = '$file';\n";
echo "document.images['preview[$row[wf_id]]'].style.display = '';\n";
}
}
?>
}
if (f.w.value == '' && typeof(f.wr_name) != 'undefined') {
f.wr_name.focus();
} else if (f.w.value == 'u') {
f.wr_subject.focus();
if (typeof(f.ca_id) != 'undefined') {
f.ca_id.value = '<?=$ca_id?>';
}
}
function fgbform_check(f)
{
var count = 0;
for (i=0; i<input_idx; i++)
{
if (f.elements["wf_file["+i+"]"].value.match(/(.jpg|.jpeg)$/i))
count++;
else
{
if (f.elements["wf_file["+i+"]"].value != "")
{
alert(f.elements["wf_file["+i+"]"].value + "\n\n이미지 파일이 아니거나 jpg 파일이 아닙니다.\n\njpg 파일만 올릴 수 있습니다.");
f.elements["wf_file["+i+"]"].select();
f.elements["wf_file["+i+"]"].focus();
return false;
}
}
// 내용 검색에 나오게 하기 위하여 내용을 합침
f.wr_content.value += f.elements["wf_cont["+i+"]"].value;
}
// 입력일 경우에만 물어봄
if (f.w.value == '' && !count)
{
if (!confirm("이미지를 하나도 선택하지 않았습니다.\n\n그대로 입력하시겠습니까?"))
return false;
}
// 저장버튼을 없앤다
// btn_hidden.style.display = 'none';
// return true;
}
</script>
고수님들 제발 도와주세요.
아래 링크에서 얻은 스킨을 이용해 사용하는데 왜 jpg 만 업로드가 될까여? 기타 이외의 파일을 업로드 하는 방법은 없나요?
잘 하시는 분들 부탁 드립니다.
아래 소스는 gbform.skin.php 파일의 밑에 해당하는 자바스크립트 부분인데 이부분에서 수정을 할꺼 같아 올립니다.
그리고 첨부 파일에는 gbform.skin.php있으니 제발 도와 주세요.
그리고 이 스킨의 원래 출처는
http://www.sir.co.kr/?doc=bbs/gnuboard.php&bo_table=skin3&sselect=ca_id&stext=&page=2&wr_id=8525
입니다,
---------------------------------------------------
<script language='Javascript'>
var f = document.fgbform;
if (f.w.value == "")
AddFile(5);
else
{
<?
$sql = " select max(wf_id) from $file_table where wr_id = '$wr_id' ";
$row = sql_fetch($sql);
$num = $row[0];
$sql = " select * from $file_table
where wr_id = '$wr_id'
order by wf_id ";
$result = sql_query($sql);
?>
AddFile(<?=$num+1?>);
<?
for ($i=0; $i<=$num; $i++)
{
$row = mysql_fetch_array($result);
if (!$row[0])
continue;
//if ($w == "u") echo "f.elements['wf_id_del[$row[wf_id]]'].value = '$row[wf_id]';\n";
echo "f.elements['wf_cont[$row[wf_id]]'].value = '".addslashes($row[wf_cont])."';\n";
$file_name = get_thumb_filename($wr_id, $row[wf_id]);
$file = "./data/file/$bo_table/{$file_name}_s.jpg";
if (file_exists($file))
{
echo "document.images['preview[$row[wf_id]]'].src = '$file';\n";
echo "document.images['preview[$row[wf_id]]'].style.display = '';\n";
}
}
?>
}
if (f.w.value == '' && typeof(f.wr_name) != 'undefined') {
f.wr_name.focus();
} else if (f.w.value == 'u') {
f.wr_subject.focus();
if (typeof(f.ca_id) != 'undefined') {
f.ca_id.value = '<?=$ca_id?>';
}
}
function fgbform_check(f)
{
var count = 0;
for (i=0; i<input_idx; i++)
{
if (f.elements["wf_file["+i+"]"].value.match(/(.jpg|.jpeg)$/i))
count++;
else
{
if (f.elements["wf_file["+i+"]"].value != "")
{
alert(f.elements["wf_file["+i+"]"].value + "\n\n이미지 파일이 아니거나 jpg 파일이 아닙니다.\n\njpg 파일만 올릴 수 있습니다.");
f.elements["wf_file["+i+"]"].select();
f.elements["wf_file["+i+"]"].focus();
return false;
}
}
// 내용 검색에 나오게 하기 위하여 내용을 합침
f.wr_content.value += f.elements["wf_cont["+i+"]"].value;
}
// 입력일 경우에만 물어봄
if (f.w.value == '' && !count)
{
if (!confirm("이미지를 하나도 선택하지 않았습니다.\n\n그대로 입력하시겠습니까?"))
return false;
}
// 저장버튼을 없앤다
// btn_hidden.style.display = 'none';
// return true;
}
</script>
댓글 전체
위 내용중 다음 내용을 어떻게 처리할것인지도 확인을 해보셔야 할듯하군요.
>> $file = "./data/file/$bo_table/{$file_name}_s.jpg";
>> $file = "./data/file/$bo_table/{$file_name}_s.jpg";
if (f.elements["wf_file["+i+"]"].value.match(/(.jpg|.jpeg)$/i)) <--- 이 부분을
if (f.elements["wf_file["+i+"]"].value.match(/(.jpg|.jpeg|.gif|.png)$/i)) <-- 이렇게 고치면 될것 같은데...
문제는 저장시 뿐만아니라 출력시에도 체크해 보셔야 할 것 같네요!
if (f.elements["wf_file["+i+"]"].value.match(/(.jpg|.jpeg|.gif|.png)$/i)) <-- 이렇게 고치면 될것 같은데...
문제는 저장시 뿐만아니라 출력시에도 체크해 보셔야 할 것 같네요!
음.. 위 링크를 따라가서 프로그램을 좀 봤습니다.
일단 먼저 말씀드리고 싶은 것은 위의 소스 하나만 고쳐서 해결된 문제가 아니라는것을 말씀드립니다.
위 스킨은 썸네일이라는 기능을 사용하는데 위 스킨에서 구현된것은 jpeg 이미지만 처리할수있도록 구현된 것입니다.
위 스킨이 다른 이미지를 처리하는것보단 스킨에 올릴 이미지를 jpg로 변형하셔서 올리는것이 좋을듯 합니다.
다른이미지를 처리하려면 그 이미지 포맷에 맞는 기능을 추가 구현하셔야 할듯합니다.
참고로 말씀드리면 위 스킨의 이미지 처리의 핵심은 gbupdate.skin.php의 다음 부분입니다.
$src_file = $_FILES["wf_file"][tmp_name][$i];
$dst_file = $image = "./data/file/$bo_table/$file_name.jpg";
move_uploaded_file($src_file, $dst_file);
$size = getimagesize($image);
$src = imagecreatefromjpeg($image);
// 이미지 높이 비율
$rate = $size[1] / $size[0];
// 작은이미지의 높이
$simg_height = (int)($simg_width * $rate);
// 이미지가 jpg 라면
if ($src)
{
// 이미지(소) 생성
$dst = imagecreatetruecolor($simg_width, $simg_height);
// 1.00.05 gd 버전에 따라
if (function_exists("imagecopyresampled")) {
imagecopyresampled($dst, $src, 0, 0, 0, 0, $simg_width, $simg_height, $size[0], $size[1]);
} else {
// 1.00.02 imagecopyresized -> imagecopyresampled 로 교체
imagecopyresized($dst, $src, 0, 0, 0, 0, $simg_width, $simg_height, $size[0], $size[1]);
}
imagejpeg($dst, "./data/file/$bo_table/{$file_name}_s.jpg", $image_quality);
}
일단 먼저 말씀드리고 싶은 것은 위의 소스 하나만 고쳐서 해결된 문제가 아니라는것을 말씀드립니다.
위 스킨은 썸네일이라는 기능을 사용하는데 위 스킨에서 구현된것은 jpeg 이미지만 처리할수있도록 구현된 것입니다.
위 스킨이 다른 이미지를 처리하는것보단 스킨에 올릴 이미지를 jpg로 변형하셔서 올리는것이 좋을듯 합니다.
다른이미지를 처리하려면 그 이미지 포맷에 맞는 기능을 추가 구현하셔야 할듯합니다.
참고로 말씀드리면 위 스킨의 이미지 처리의 핵심은 gbupdate.skin.php의 다음 부분입니다.
$src_file = $_FILES["wf_file"][tmp_name][$i];
$dst_file = $image = "./data/file/$bo_table/$file_name.jpg";
move_uploaded_file($src_file, $dst_file);
$size = getimagesize($image);
$src = imagecreatefromjpeg($image);
// 이미지 높이 비율
$rate = $size[1] / $size[0];
// 작은이미지의 높이
$simg_height = (int)($simg_width * $rate);
// 이미지가 jpg 라면
if ($src)
{
// 이미지(소) 생성
$dst = imagecreatetruecolor($simg_width, $simg_height);
// 1.00.05 gd 버전에 따라
if (function_exists("imagecopyresampled")) {
imagecopyresampled($dst, $src, 0, 0, 0, 0, $simg_width, $simg_height, $size[0], $size[1]);
} else {
// 1.00.02 imagecopyresized -> imagecopyresampled 로 교체
imagecopyresized($dst, $src, 0, 0, 0, 0, $simg_width, $simg_height, $size[0], $size[1]);
}
imagejpeg($dst, "./data/file/$bo_table/{$file_name}_s.jpg", $image_quality);
}