2012-02-05 3 views
3

나는 다음과 같은 코드를 사용하여 원격 서버에서 이미지를 복사하기 위해 노력하고있어에 이미지를 복사 :한 서버에서 다른 서버로 사용하여 PHP

Warning: file_put_contents(/server/location/upload/) [function.file-put-contents]: failed to open stream: Is a directory in /server/location/myscript.php on line 220

:

$src = "http://www.imagelocation.com/image.jpg"; 
$dest = "/server/location/upload/"; 
file_put_contents($dest, file_get_contents($src)); 

불행히도 나는 다음과 같은 오류가 계속

이 문제를 해결하는 방법에 대한 아이디어가 있으십니까?

답변

9
$src = "http://www.imagelocation.com/image.jpg"; 
$dest = "/server/location/upload/" . basename($src); 
file_put_contents($dest, file_get_contents($src)); 

파일 이름을 지정해야합니다. 원래 파일과 동일한 파일 이름에 쓸 basename($src)을 추가했습니다. 다른 디렉토리에서 복사하는 경우 조심하십시오. basename()은 파일 이름 만 반환하므로 /image.jpg 및 /a/image.jpg를 복사하면 원본을 덮어 쓰게됩니다.

+0

완벽하면이 예제가 실제로 도움이됩니다. 고맙습니다! 또 다른 메모에서 사본이 성공했는지 어떻게 해결할 수 있습니까? – David

+2

사용 $ check = file_put_contents ($ dest, file_get_contents ($ src)); 그리고 $ check 값을 살펴보십시오. http://php.net/manual/en/function.file-put-contents.php : 이 함수는 파일에 기록 된 바이트 수를 반환하고 실패하면 FALSE를 반환합니다. – Daan

2

$ dest는 파일이 아닌 디렉토리이기 때문입니다. 파일 이름을 수동으로 지정하거나 basename()을 사용할 수 있습니다.

+0

내가 잘못 된 곳을 설명해 주셔서 감사합니다. 그것은 매우 유용했습니다! – David

관련 문제