2012-09-01 29 views
4

我想用ajax调用做一个简单的复制。这是我的代码,但它不起作用。我kepp得到:副本(../../ images/merchant/particulars/208 /)无法打开流:某个/ filepath中的目录位于scriptname.php行x,错误类型。php copy()不起作用

corrected code: 

$dir_to_make = '../../images/merchant/particulars/'.$copytothisstore; 
$dir = '../../images/merchant/particulars/'.$copytothisstore.' /'.$copyvalue; 
$image_to_copy = '../../images/merchant/particulars/'.$copyfromthisstore.'/'.$copyvalue; 






    if(is_file($image_to_copy)){ 

     //chk if there is a folder created for this store 
     if(!is_dir($dir_to_make)){ 
       mkdir($dir_to_make, 0755); 
       chmod($dir_to_make, 0755); 

       //copy the image 
       if (!copy($image_to_copy,$dir)) { 
        echo "failed to copy $image_to_copy\n"; 
       } else { 
        echo"all is well!!"; 
       } 

      } else { 
       chmod($dir_to_make, 0755); 
       if (!copy($image_to_copy,$dir)) { 
        echo "failed to copy $image_to_copy\n"; 
       } else { 
        echo"all is well!!"; 
       } 

      } 


      echo"$image_to_copy does exist!"; 
     } else{ 
      echo"$image_to_copy does not exist!"; 
     } 

回答

5

请阅读错误。

copy(../../images/merchant/particulars/208/) failed to open stream: Is a directory in some/filepath 

它说,你的源文件不是一个文件,但目录。

简单的调试总是可以解决你的问题:

$image_to_copy ='../../images/merchant/particulars/'.$copyfromthisstore.'/'.$copyvalue; 
echo $image_to_copy; // yes, that could give you the answer 

它会告诉你,那$copyvalue你的例子是空的。


如果你想知道这是为什么返回TRUE ...

if(file_exists($image_to_copy)){ 

..它是因为目录../../images/merchant/particulars/208/确实存在。

由于手册说:

您应将其更改为:

if(is_file($image_to_copy)){ 

的另一件事是,以及目的地shuld是文件:

copy($image_to_copy, $dir.'file.jpg'); 

手册:

+0

好的。我试过,如果(is_file($ image_to_copy)){和我得到相同的错误。我认为问题是我不明白错误信息。复制(../../ images/merchant/particulars/208 /)无法打开流:是某个/ filepath中的目录。错误中的路径是目标文件夹,而不是要复制的映像的路径。所以我不明白。正确的参数被放置在正确的位置。副本($ image_to_copy,$ DIR); – jessiPP

+0

'$ copyvalue'在你的例子中是空的。请用新代码更新您的问题。 – Peter

+0

它确实有价值。在错误我有我自己的调试回声:../../images/merchant/particulars/652/cibc.jpg确实存在! – jessiPP

-3

使用此功能

!move_uploaded_file($image_to_copy, $dir) 

http://php.net/manual/en/function.move-uploaded-file.php

+1

它似乎没有处理上传的文件。 –

+1

我刚刚得到了一个顿悟。在我所有的阅读中,我一直认为你传递给副本()。我总是这样,它是如何工作的复制('images/298/image.jpg','images/296 /')。我只是意识到它需要这个副本('images/298/image.jpg','images/296/image.jpg'); – jessiPP

+0

行首的'!'是什么? – Spudley

0

我想你混淆了一个简单的事情。这里是一个简单的例子,如何使用copy()

$file = 'path/to/filename.ext'; // Example: http://adomain.com/content/image.jpg 

$destination_folder = 'path/of/the/destination/folder'; 
//example: $_SERVER["DOCUMENT_ROOT"]."/content/files/" 


// Execute the copy function 
copy($file, $destination_folder.'/newFilaname.ext');