我有以下代码:
$file = 'http://3.bp.blogspot.com/-AGI4aY2SFaE/Tg8yoG3ijTI/AAAAAAAAA5k/nJB-mDhc8Ds/s400/rizal001.jpg';
$newfile = '/img/submitted/yoyo.jpg';
if ( copy($file, $newfile) ) {
echo "Copy success!";
}else{
echo "Copy failed.";
}
Run Code Online (Sandbox Code Playgroud)
它总是输出"复制失败"
copy(/img/submitted/yoyo.jpg) [function.copy]: failed to open stream: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我的目录设置为777.
有任何想法吗?谢谢!
Mar*_*iek 58
虽然copy()将接受URL作为源参数,但它可能会出现目标的URL .
您是否尝试过指定输出文件的完整文件系统路径?我假设您没有尝试将新文件放到远程服务器上.
例如:
$file = 'http://3.bp.blogspot.com/-AGI4aY2SFaE/Tg8yoG3ijTI/AAAAAAAAA5k/nJB-mDhc8Ds/s400/rizal001.jpg';
$newfile = $_SERVER['DOCUMENT_ROOT'] . '/img/submitted/yoyo.jpg';
if ( copy($file, $newfile) ) {
echo "Copy success!";
}else{
echo "Copy failed.";
}
Run Code Online (Sandbox Code Playgroud)
以上对我来说很有效.
我在我的一个旧项目中发现了这个功能.
private function download_file ($url, $path) {
$newfilename = $path;
$file = fopen ($url, "rb");
if ($file) {
$newfile = fopen ($newfilename, "wb");
if ($newfile)
while(!feof($file)) {
fwrite($newfile, fread($file, 1024 * 8 ), 1024 * 8 );
}
}
if ($file) {
fclose($file);
}
if ($newfile) {
fclose($newfile);
}
}
Run Code Online (Sandbox Code Playgroud)