allow_url_fopen 설정 on 안하고 Zip 파일로 다운로드 못하나요? 채택완료
쉐어링되는 호스팅 구조를 갖고있어서
호스팅사에서 allow_url_fopen 설정을 개방할수가 없다고 한 상태인데
그럼, ZipArchive 말고는 웹상에서 여러이미지를
Zip 으로 묶어서 다운로드 받는방법은 없을까요?
답변 3개
채택된 답변
+20 포인트
3년 전
allow_url_fopen 이걸 오픈시 외부에서 include를 할수 있도록 허용하는 부분이라 제한하는 부분이고요
php로 파일을 압축해서 받도록 처리하시려는 작업을 위해서는 zip 압축이 용이한 부분입니다.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 5개
3년 전
3년 전
$sql1 = " select * from {$_table_name} where abcd = 'abcd' ";
$rst1 = $conn->query($sql1);
//압축할 파일들의 경로
$_file_list = array();
if ($rst1->num_rows > 0) {
while($row = $rst1->fetch_assoc()) {
array_push($_file_list, array(
'filename' => $row['filename'],
'imgurl' => $row['imgurl']
));
}
}else{
echo "<script>alert('업로드된 파일이 없습니다');</script>";
}
//다운로드되는 파일명
$zip_name = "abcd.zip";
$zip = new ZipArchive();
if ($zip->open($zip_name, ZipArchive::CREATE) !== true){
exit("cannot open [".$zip_name."]");
}
$cnt = 0;
foreach($_file_list as $files){
echo $files[$cnt]["imgurl"];
$zip->addFile($files[$cnt]["imgurl"], $files[$cnt]["filename"]);
$cnt++;
}
$zip->close();
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=".$zip_name);
header("Pragma: no-cache");
header("Expires: 0");
readfile($zip_name);
unlink($zip_name);
-----------------------------
코드는 이렇구요
zip 파일은 다운로드까지 되는데 열면 형식이 올바르지 않다고 나오고
안에 아무것도 없어요
$files[$cnt]["imgurl"]
는 파일명까지 포함된 경로입니다.
PHP 버전은 5.6이에요
$rst1 = $conn->query($sql1);
//압축할 파일들의 경로
$_file_list = array();
if ($rst1->num_rows > 0) {
while($row = $rst1->fetch_assoc()) {
array_push($_file_list, array(
'filename' => $row['filename'],
'imgurl' => $row['imgurl']
));
}
}else{
echo "<script>alert('업로드된 파일이 없습니다');</script>";
}
//다운로드되는 파일명
$zip_name = "abcd.zip";
$zip = new ZipArchive();
if ($zip->open($zip_name, ZipArchive::CREATE) !== true){
exit("cannot open [".$zip_name."]");
}
$cnt = 0;
foreach($_file_list as $files){
echo $files[$cnt]["imgurl"];
$zip->addFile($files[$cnt]["imgurl"], $files[$cnt]["filename"]);
$cnt++;
}
$zip->close();
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=".$zip_name);
header("Pragma: no-cache");
header("Expires: 0");
readfile($zip_name);
unlink($zip_name);
-----------------------------
코드는 이렇구요
zip 파일은 다운로드까지 되는데 열면 형식이 올바르지 않다고 나오고
안에 아무것도 없어요
$files[$cnt]["imgurl"]
는 파일명까지 포함된 경로입니다.
PHP 버전은 5.6이에요
3년 전
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=".$zip_name);
header("Pragma: no-cache");
header("Expires: 0");
헤더구분에서 문제가 있었던것같습니다.
아직도 이유를 찾지 못했지만 아마도 zip 파일을 ZipArchive로 생성된것과 무관하게
임시로 zip 파일을 다운받아버려서 문제가 생긴것같긴한데...
일단
ZipArchive을 이용한 zip 파일이 정상적으로 생성되는것을 확인했고
생성 후 자바스크립트로 다운받는것까지 정상적으로 되는것을 확인해서
이후 일단 임시 zip 파일 생성한걸 ajax로 php호출해서 파일 삭제하는것을 하려고 합니다.
header("Content-Disposition: attachment; filename=".$zip_name);
header("Pragma: no-cache");
header("Expires: 0");
헤더구분에서 문제가 있었던것같습니다.
아직도 이유를 찾지 못했지만 아마도 zip 파일을 ZipArchive로 생성된것과 무관하게
임시로 zip 파일을 다운받아버려서 문제가 생긴것같긴한데...
일단
ZipArchive을 이용한 zip 파일이 정상적으로 생성되는것을 확인했고
생성 후 자바스크립트로 다운받는것까지 정상적으로 되는것을 확인해서
이후 일단 임시 zip 파일 생성한걸 ajax로 php호출해서 파일 삭제하는것을 하려고 합니다.
댓글을 작성하려면 로그인이 필요합니다.
포인트적립
3년 전
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
3년 전
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=".$zip_name);
header("Pragma: no-cache");
header("Expires: 0");
헤더구분에서 문제가 있었던것같습니다.
아직도 이유를 찾지 못했지만 아마도 zip 파일을 ZipArchive로 생성된것과 무관하게
임시로 zip 파일을 다운받아버려서 문제가 생긴것같긴한데...
일단
ZipArchive을 이용한 zip 파일이 정상적으로 생성되는것을 확인했고
생성 후 자바스크립트로 다운받는것까지 정상적으로 되는것을 확인해서
이후 일단 임시 zip 파일 생성한걸 ajax로 php호출해서 파일 삭제하는것을 하려고 합니다.
header("Content-Disposition: attachment; filename=".$zip_name);
header("Pragma: no-cache");
header("Expires: 0");
헤더구분에서 문제가 있었던것같습니다.
아직도 이유를 찾지 못했지만 아마도 zip 파일을 ZipArchive로 생성된것과 무관하게
임시로 zip 파일을 다운받아버려서 문제가 생긴것같긴한데...
일단
ZipArchive을 이용한 zip 파일이 정상적으로 생성되는것을 확인했고
생성 후 자바스크립트로 다운받는것까지 정상적으로 되는것을 확인해서
이후 일단 임시 zip 파일 생성한걸 ajax로 php호출해서 파일 삭제하는것을 하려고 합니다.
댓글을 작성하려면 로그인이 필요합니다.
3년 전
$files[$cnt]["imgurl"] 이게 로컬파일이 아니라 외부파일 uri 인가보네요.
curl 관련함수로 로컬로 가져온다음
압축하는 방법도 있을것 같습니다.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 7개
3년 전
그러면 allow_url_fopen 가 따로 개입할일은 없을것 같은데
allow_url_fopen 관련 무슨 에러가 발생하나요?
에러내용이 있어야 추가 확인이 가능할것 같습니다.
allow_url_fopen 관련 무슨 에러가 발생하나요?
에러내용이 있어야 추가 확인이 가능할것 같습니다.
3년 전
에러가 따로 발생하는건 아니고 .zip 파일 다운로드까지 되는데
열려고하면 폴더를 열수없습니다 'xxxxx.zip'가 올바르지 않습니다 라고 뜨고
압축풀려고하면 [zip]압축파일로 파일을 열 수 없습니다 압축되지 않았습니다.
라고 떠요.
일반파일을 강제로 확장자만 .zip 으로 바꾼 느낌이랄까...
경로는 확인해봤는데 이상없더라구요...뭐가문제일까요...
allow_url_fopen 는
혹시나 ZipArchive 가 플러그인 형태로 서버세팅시
확장기능 세팅같은걸 해야할까 싶어서 호스팅업체에 문의했더니
allow_url_fopen 를 on 할수없다고만 답변을 받아서
당연히 관련있는건줄알고 여기 질문올릴때 그렇게 쓴거에요.
열려고하면 폴더를 열수없습니다 'xxxxx.zip'가 올바르지 않습니다 라고 뜨고
압축풀려고하면 [zip]압축파일로 파일을 열 수 없습니다 압축되지 않았습니다.
라고 떠요.
일반파일을 강제로 확장자만 .zip 으로 바꾼 느낌이랄까...
경로는 확인해봤는데 이상없더라구요...뭐가문제일까요...
allow_url_fopen 는
혹시나 ZipArchive 가 플러그인 형태로 서버세팅시
확장기능 세팅같은걸 해야할까 싶어서 호스팅업체에 문의했더니
allow_url_fopen 를 on 할수없다고만 답변을 받아서
당연히 관련있는건줄알고 여기 질문올릴때 그렇게 쓴거에요.
3년 전
그럼 이부분을 디버깅 해보셔야 할것 같네요.
[code]
echo $files[$cnt]["imgurl"]; // 출력 및 실제경로 파일존재유무 확인
echo $files[$cnt]["filename"]; // 이름 정상 출력 확인
$zip->addFile($files[$cnt]["imgurl"], $files[$cnt]["filename"]); // 내부 함수 동작 디버깅
[/code]
[code]
echo $files[$cnt]["imgurl"]; // 출력 및 실제경로 파일존재유무 확인
echo $files[$cnt]["filename"]; // 이름 정상 출력 확인
$zip->addFile($files[$cnt]["imgurl"], $files[$cnt]["filename"]); // 내부 함수 동작 디버깅
[/code]
3년 전
$files[$cnt]["imgurl"]; 는 $files["imgurl"]; 로 수정해서 정상적으로 출력되는거 확인했어요.
$files["filename"]; 도 마찬가지구요.
몇가지 걸리는게...
혹시 경로가 물리적 경로여야되나요?
http://www.abcd.com/ 도메인주소를 포함한 경로가 아닌 /home/호스팅아이디/html/ 형태의 경로여야되는건지....
그리고 경로에 한글이 포함되어있긴한데....
루트에 ziptest 만들고 파일 두개만 넣어놓고 해도 똑같네요...왜그런지 도저히 모르겠네요 ㅋㅋㅋ
php버전은 상관없는건지...
하긴 구문에 오류가있었다면 페이지 자체에서 에러를 띄웠겠져?...;;
$files["filename"]; 도 마찬가지구요.
몇가지 걸리는게...
혹시 경로가 물리적 경로여야되나요?
http://www.abcd.com/ 도메인주소를 포함한 경로가 아닌 /home/호스팅아이디/html/ 형태의 경로여야되는건지....
그리고 경로에 한글이 포함되어있긴한데....
루트에 ziptest 만들고 파일 두개만 넣어놓고 해도 똑같네요...왜그런지 도저히 모르겠네요 ㅋㅋㅋ
php버전은 상관없는건지...
하긴 구문에 오류가있었다면 페이지 자체에서 에러를 띄웠겠져?...;;
3년 전
http:// ... 로 나가면 그게 곧 외부 파일인거고 거기서 파일을 못가져왔을 확률이 높습니다.
서버 안의 물리적 절대경로가 되어야 할것 같구요 (/home/abc/...)
그 경로에 파일이 올바로 있는지 확인이 되어야 하고
한글 포함 같은 경우엔 urlencode 적용시켜 보세요
서버 안의 물리적 절대경로가 되어야 할것 같구요 (/home/abc/...)
그 경로에 파일이 올바로 있는지 확인이 되어야 하고
한글 포함 같은 경우엔 urlencode 적용시켜 보세요
3년 전
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=".$zip_name);
header("Pragma: no-cache");
header("Expires: 0");
헤더구분에서 문제가 있었던것같습니다.
아직도 이유를 찾지 못했지만 아마도 zip 파일을 ZipArchive로 생성된것과 무관하게
임시로 zip 파일을 다운받아버려서 문제가 생긴것같긴한데...
일단
ZipArchive을 이용한 zip 파일이 정상적으로 생성되는것을 확인했고
생성 후 자바스크립트로 다운받는것까지 정상적으로 되는것을 확인해서
이후 일단 임시 zip 파일 생성한걸 ajax로 php호출해서 파일 삭제하는것을 하려고 합니다.
header("Content-Disposition: attachment; filename=".$zip_name);
header("Pragma: no-cache");
header("Expires: 0");
헤더구분에서 문제가 있었던것같습니다.
아직도 이유를 찾지 못했지만 아마도 zip 파일을 ZipArchive로 생성된것과 무관하게
임시로 zip 파일을 다운받아버려서 문제가 생긴것같긴한데...
일단
ZipArchive을 이용한 zip 파일이 정상적으로 생성되는것을 확인했고
생성 후 자바스크립트로 다운받는것까지 정상적으로 되는것을 확인해서
이후 일단 임시 zip 파일 생성한걸 ajax로 php호출해서 파일 삭제하는것을 하려고 합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
allow_url_fopen 설정은 off로 하든 상관없는건가요?