2010-12-15 2 views
0

일반적인 PHP/MySql 설치를 사용하여 클라이언트 (상업용 사진 작가) 용 사용자 정의 응용 프로그램을 작성합니다. 이 응용 프로그램은 내 클라이언트의 클라이언트가 자신에게 할당 된 이미지에 액세스하여 볼 수있게하고 다운로드 할 수있게합니다.사용자가 모든 이미지를 다운로드 할 수있는 웹 응용 프로그램 기능을 만들고 싶습니다. 몇 가지 포인터가 필요합니다

클라이언트가 "모두 다운로드 - 인쇄 크기 품질"및 "모든 웹 해상도 다운로드"를 클릭 할 수 있도록 옵션을 추가해야합니다. 업로드 된 이미지는 자동으로 별도의 해상도로 저장됩니다. 클라이언트에게 일반적으로 다운로드 할 이미지를 추가하면 최대 500MB가됩니다. 모든 이미지를 압축하여 압축하는 것이 길 일 것입니다.

내가이 문제에 접근하는 방법을 제안하고, 나를 도울 수있는 자료를 알고 있다면?

답변

1

는 여기에서 찾을 수 있습니다 : 당신이 더러운 솔루션을 선호하는 경우 http://www.php.net/manual/en/zip.examples.php

또는

, 당신은 tar 기능에 내장 된 리눅스를 사용하고, 함께 결합 할 수 있습니다 exec


각 이미지마다 3 가지 다른 크기가 있어야하며 zip은 아카이브에 추가 할 올바른 크기의 이미지를 선택하는 데에만 집중해야한다고 가정합니다.

그러나 위의 내용은 문제가 아니므로 클라이언트는 ftp 프로그램을 사용하거나 http 하이퍼 링크를 통해 다운로드 도구를 사용하는 것보다 이러한 대용량 파일을 다운로드하는 더 좋은 방법을 설득해야합니다.) 너무 높은

+0

불행히도 FTP는 훌륭한 해결책이 아닙니다. 클라이언트는 자신의 클라이언트가 웹 인터페이스를 통해 로그인하고 자신의 포트폴리오 아래에서 이미지에 액세스 할 수 있기를 원합니다. 당신은 "일부 다운로드 도구"를 언급했다. 분명히 해줄 수 있니? – Roeland

+0

[flash get] (http://download.cnet.com/FlashGet/3000-2071_4-10566273.html)과 같이 사용자가 마우스 오른쪽 버튼을 클릭하여 다운로드 대기열에 추가 할 수 있으며 물론 사용자 로그인을 임베드 할 수 있습니다. 확인되지 않은 사용자가 다운로드하지 못하도록 확인합니다.) 응용 프로그램의 자격 증명 검사에 대해 메모하십시오 – ajreal

0

나는 zip이 갈 길이라고 말할 것이다. PHP를 사용하여 선택한 파일을 즉시 압축 한 다음 사용자가 자동으로 다운로드하도록합니다.

아마도 사용자가 양식의 이미지 옆에있는 확인란을 클릭하면 데이터가 처리 페이지로 전송되어 사용자의 ZIP 파일을 뱉어 낼 것입니다.

http://davidwalsh.name/create-zip-php

+1

zip에 500Mb의 이미지를 추가하면 어떤 종류의 스트레스가 서버에 추가됩니까? 나는 사용자가 다운로드를 클릭하기를 원하지 않으며 서버가 지퍼를 뱉어 내기 전에 2 분 정도 기다려야한다. – Roeland

+0

그것은 서버 연결의 나가는 대역폭, 파일이 얼마나 빨리 빠르는지 그리고 예상되는 트래픽의 양과 관련하여 서버 프로세서 속도/메모리에 관한 것입니다. – mmundiff

1

당신은 모든 다운로드 즉석에서 ZIP 파일을 생성하지 않아야 도움이 될 수 있습니다. 이것은 매우 비효율적 일 것입니다.

사진을 업로드 할 때 각 크기에 하나씩 두 개의 새로운 ZIP 파일을 만듭니다. 테이블에 두 개의 열을 추가하고, 작은 ZIP을 가리키며, 다른 하나는 큰 것을 가리 킵니다. 그냥 거기에 두 개의 링크를 가리 키십시오.

당신은 PHP Zip

예를 사용할 수 있습니다

+0

아마, 내가 질문을 다시 읽은 후에는 다운로드 할 파일을 선택하지 않고 고해상도 또는 웹 중 하나로 가정하고 다운로드 할 수 있습니다. +1 – mmundiff

+0

이 경로를 고려하고 있었는데, 기본적으로 서버의 저장 공간을 두 배로 늘려야합니다. 나는 그것이 유일한 단점 일 것이라고 생각한다. 클라이언트는 최대 2tb의 데이터를 가져야한다고 생각합니다. 이렇게하면 효과적으로 4tb를 만들 수 있습니다. – Roeland

0

사용 ZipArchive, 그것을 다음 출력 임시 파일로 저장 : 물론

$path = '/path/to/your/images'; 

// search for files matching *.png; *.gif; *.jpg 
$files = glob($path.'/*.{png,gif,jpg}', GLOB_BRACE); 

// create temporary filename 
$tmp = tempnam(sys_get_temp_dir(), 'images'); 

// create zip 
$zip = new ZipArchive; 
$zip->open($tmp, ZIPARCHIVE::CREATE); 
foreach ($files as $file) { 
    // may want to manipulate $file to remove the directory prefix 
    $zip->addFile($file); 
} 
$zip->close(); 

// output as an attachment 
header('Content-Type: application/zip'); 
header('Content-Disposition: attachment;filename=foo.zip'); 
readfile($tmp); 

, 당신이 정말로 이미지 500MB의이있는 경우, 시간이 좀 걸릴 것입니다. 파일을 미리 압축하는 것이 더 좋습니다 (cron 또는 업로드 할 때마다).

+0

잠시 말하면 30 초가됩니다 .. 20 분 .. 5 초? – Roeland

+0

알아야 할 사항은 실제로 하드웨어 (CPU, 메모리, 디스크) 및 서버로드에 따라 다릅니다. – netcoder

관련 문제