2017-05-18 1 views
-2

내 웹 사이트의 파일 시스템을 이런 식으로 뭔가 보이는 가정 클릭 '의 index.php'페이지에서우편 및 다운로드 폴더 그게 전부는 예를 들어

img/ 
css/ 
js/ 
index.php 
contact.php 
about.php 
myfolder/ <-- zip and download 
    img/ 
    css/ 
    file.html 
    js/ 
    (etc...) 

을, 하나의 입력과 양식을 프로그래머 '다운로드'버튼을 클릭하십시오. 입력 필드에서; 사용자는 폴더에 넣을 이름을 입력 한 다음 다운로드 버튼을 클릭합니다.

다운로드 버튼을 클릭하면 어떻게 'myfolder'를 압축하여 'myfolder'에서 입력 필드에 입력 한 이름으로 사용자 브라우저에 다운로드 할 수 있습니까? zip 파일과 zip 내의 폴더에는 사용자가 입력 한 이름이 있습니다.

나는 다음을 시도 : https://stackoverflow.com/a/19451938/3758078 그러나 그것은/htdocs 폴더 및 다른 하위 폴더의 권한을 변경할 때만 작동합니다. 내 응용 프로그램은 온라인 웹 서버가 아닌 localhost에서만 실행되며 사용자가 변경 권한 및 이와 같은 문제를 처리해야하는 것을 원하지는 않습니다. 이것이 JavaScript를 사용하여 수행 될 수 있다면 PHP 대신에 바람직 할 것입니다.

나는 파일 시스템에 미리 압축 된 폴더를 포함 시키려고 시도했으며 단순히 앵커 태그를 사용하여 링크했습니다. 압축 폴더는 자동으로 다운로드되지만 파일 이름은 변경할 수 없습니다. 필자는 파일을 압축하는 것을 지나치게 생각한다고 생각합니다. 압축 된 파일을 포함시키는 대신 단순히 사용자가 입력 한 내용을 기반으로 이름을 변경하고 앵커 태그를 사용하여 파일에 연결하는 것입니다.

+0

'gzip'과'curl'을보세요 – ThisGuyHasTwoThumbs

+1

당신은 무엇을 시도 했습니까? 작동하지 않는 코드를 포함시킬 수 있습니까? 어떤 방식으로 작동하지 않습니까? – Adrian

+0

시도한 내용으로 업데이트되었습니다. – guub

답변

0

글쎄, 먼저 오프 허가가 중요합니다. 그러나 그렇게 말하면, 당신이하려고하는 것에 대한 여러 변수들을 고려해야 할 것입니다. 인터넷 브라우저, 운영 체제 및 사용자가 서로 다른 것을 고려하지 않고는이 작업을 수행 할 수 없습니다. 집중적 인 프로그래밍 기술이 없으면 대부분의 사람들은이 기능을 안전하게 수행하고 모든 컴퓨터에서 작업 할 수있는 웹 사이트를 만들 수 없습니다.

나는 사용자가 다운로드 할 수있는 내용으로 자신 만의 zip 또는 tar 파일 (파일에 OS 불가지론이 필요함)을 만들고 해당 파일을 다운로드 할 수있게 만들 것을 권장합니다. 자신의 컴퓨터에 무언가를 만들거나 (작동 시키십시오), 다른 컴퓨터에서 똑같은 경험을 기대할 수는 없습니다. 단지 그렇게 작동하지 않습니다. 외부 소비를 위해 무엇이든 개발할 때 외부 자원의 변수를 고려해야합니다.

디렉토리의 내용을 정기적으로 압축하여 사용자가 다운로드 할 수 있도록하는 스크립트 (예 : 쉘 스크립트, perl, java)를 작성할 수 있습니다.

+0

안녕하세요. Google 크롬 브라우저가 저의 유일한 관심사입니다. 이미 압축 된 폴더를 포함 시키려고 시도했지만 단순히 앵커 태그로 링크했습니다. 압축 파일은 자동으로 다운로드되지만 이름을 변경할 수는 없습니다. – guub

0

사용자에게 권한을 부여 할 필요가 없습니다. 귀하의 환경을 마운트 할 때마다 HTDOCS 권한이 반드시 있어야합니다.

mkdir('/test1/test2', 0777, true); 

을 그리고 당신은 당신의 권한을 해결 한 것이다 :

하지만,하지 않을 경우 그냥 chmod 또는 check if folder exists를 사용하여 작업 할 mkdir와 다음이 만들어집니다 하위 폴더에

. @RobbieRochaus가 말했듯이, 그것은 주된 관심사이며 그것에 대해 생각해야합니다.

이름을 변경하면 올바른 파일 ID 인 rename it을 호출하고 링크를 반환하는 함수에 링크를 넣을 수 있습니다. 링크의 href로 yourFunctionName()을 에코하면 작업이 수행됩니다.

+0

좋은 아이디어. 나는 'rename ("myfolder.zip", "renamed.zip");' 하지만 'Permission denied in in ...'을 받으십시오. chmod를 사용하여 zip 파일의 권한을 변경합니까? 'chmod ("myfolder.zip", 0755)를 실행하면' 'chmod() : Operation does not allowed ...'메시지가 표시됩니다. – guub

+0

chmod를 파일에 저장하지 말고 zip 디렉토리로 실행해야합니다. – calexandre

1

코드를 추가하지 않으면 파일 이름을 변경할 수 없습니다. 일부 언어에서는이 작업을 수행 할 수 있지만 기본 솔루션은 없습니다.당신이 생각할 필요가있는 방식은 파일이 정적이라는 것입니다. 즉, 브라우저를 통해 파일을 서버에 업로드하면 파일이 변경되지 않습니다. 정적 파일을 다운로드 할 때 정적 파일을 다른 이름의 다른 파일로 변경하거나 수정하려면 코드를 작성해야하며 루트 또는 관리 사용자가 수행해야합니다. 이것은 일반적으로 응용 프로그램에 특수하고 안전하게 프로그래밍되는 기능입니다.

"인터넷"브라우저의 보안되지 않은 특성으로 인해 브라우저에서이 작업을 수행하지 않습니다. 판도라의 상자가 열리면 누군가에게 (심지어 러시아! :) 미국 유머에 대해 유감스럽게도) 파일에 액세스 할 수있게됩니다.

0

미리 압축 된 파일을 포함하십시오. 앵커 태그를 사용하여 링크하고 'name'값과 함께 'download'속성을 추가하십시오.