2017-04-12 73 views
2

我正嘗試使用網址上傳圖片。它工作正常。圖像可以正確上傳,但如果圖像已經存在,則會覆蓋該文件。
這裏是我的代碼 -在Codeigniter中使用url上傳圖片(使用csv文件)

$url=$d[1]; 
    $name = basename($url); 
    $my_location='././assets/temp_upload/'; 
    if (!defined('IMAGE_DIR')) define('IMAGE_DIR', $my_location); 
    if(!$img = file_get_contents($url)) 
    { 
    die('Getting that file failed'); 
    } 
    if(!$f = fopen(IMAGE_DIR.'/'.$name, 'w')) 
    { 
     die('Opening file for writing failed'); 
    } 
    if (fwrite($f, $img) === FALSE) 
    { 
    die('Could not write to the file'); 
    } 
    fclose($f); 

我只是想,如果圖像文件已經存在,那麼它的名字應該被改變,以使圖像不會隨寫。
請幫幫我。
謝謝。

+1

重命名毫秒的圖像名稱,然後它會正常工作,如果你還從來沒有要保留舊的圖像只是取消該關聯 –

+2

笨有自己內置的上傳庫http://www.codeigniter.com/user_guide/libraries/file_uploading .html – user4419336

+1

正如@ wolfgang1983所說,你必須引用codeigniter的文件上傳庫。在文件上傳配置中有'''overwrite'''選項,您需要將其設置爲'''true'''。 – kishor10d

回答

1

很簡單,你可以在圖像文件名的末尾添加一個隨機字符串。

$name_temp = basename($url); 
$my_location='././assets/temp_upload/'; 
if (file_exists($my_location.''.$name_temp)) { 
    $fileinfo = pathinfo($url); 
    $name=$fileinfo['filename'].'_'.rand(1,10000).''.$fileinfo['extension']; 
} 
else 
{ 
    $name=$name_temp; 
} 

您可以根據您的需要進行定製。

+0

@ Bikram。謝謝你的回答。這工作正常。 – Deepak