copy thinkphp

官方解释:


copy拷贝文件

boolcopy (string$source , string$dest )

将文件从 source 拷贝到dest。成功时返回TRUE, 或者在失败时返回FALSE.

Example #1 copy() 例子

<?php
$file = 'example.txt';
$newfile = 'example.txt.bak';

if (!copy($file, $newfile)) {
    echo "failed to copy $file...\n";
}
?> 

如果要移动文件的话,请使用 rename() 函数。


Thinkphp框架的copy

例如:copy /Public/Uploads/photo/1.jpg  到  /Public/Uploads/pic/1.jpg

(注意:拷贝的文件名要一样,例如这里的文件名都是1.jpg)


错误写法

copy('/Public/Uploads/photo/1.jpg','Public/Uploads/pic/1.jpg' );

copy('__PUBLIC__/Uploads/photo/1.jpg','__PUBLIC__/Uploads/pic/1.jpg ');

copy('http://...../Public/Uploads/photo/1.jpg','http://.....Public/Uploads/pic/1.jpg' );


正确写法

这里会用到getcwd()函数 (成功则返回当前工作目录,失败返回 FALSE)

例如;

<?php 

echo getcwd();
//E:\WampSever\wamp\b

 ?>
其实就是返回工作的跟目录

copy( getcwd() . "/Public/Uploads/photo/1.jpg",  getcwd() . "/Public/Uploads/pic/1.jpg");

这里还有个问题解释哈

当在windows环境下 getcwd()显得的路径是附带的反斜杠'\'; 

//E:\WampSever\wamp\b

当下linux环境下 getcwd()显示的路径附带的是正斜杠'/'

//E:/WampSever/wamp/b
在windows环境下

1:copy( getcwd() . "/Public/Uploads/photo/1.jpg",  getcwd() . "/Public/Uploads/pic/1.jpg");

2:copy( getcwd() . "\Public\Uploads\photo\1.jpg",  getcwd() . "\Public\Uploads\pic\1.jpg");

这两种写法都可以通过,但是换到linux环境下只有1可以通过

所以我们直接使用1方法形式或者直接使用  DIRECTORY_SEPARATOR 代替 斜杠

<?php 


copy( getcwd() . DIRECTORY_SEPARATOR  . 'Public' . DIRECTORY_SEPARATOR  . 'Uploads' . 
DIRECTORY_SEPARATOR . ' photo' . DIRECTORY_SEPARATOR  . '1.jpg', getcwd() . DIRECTORY_SEPARATOR  . 
'Public' . DIRECTORY_SEPARATOR  . 'Uploads' . DIRECTORY_SEPARATOR . ' photo' . DIRECTORY_SEPARATOR  . 
'1.jpg');


 ?>

当然这些写太麻烦,可以直接选取用1形式copy.

还dirname(__FILE__); $_SERVER['DOCUMENT_ROOT'] 也可以达到同样的效果...
<?php 

echo dirname(__FILE__);
//E:\WampSever\wamp\b


 ?>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值