PHP -

2013-10-02 16 views
116

Ben artık bunları istiyorsanız bunları yükledikten sonra web sitemdeki kullanıcıların sunucuya kapalı kendi görüntüleri silmek için izin gerekir sunucuda farklı bir klasöre dosya taşıyın. Daha önce PHP'de unlink fonksiyonunu kullanıyordum ancak o zamandan beri bu oldukça riskli ve bir güvenlik sorunu olabileceği söylendi. (Aşağıdaki Önceki kod :)PHP -

if(unlink($path.'image1.jpg')){ 
    // deleted 
} 

yerine ben şimdi sadece farklı bir klasöre dosya taşımak istiyorum. Bu, dosyayı ilk defa yükledikten sonra, hesaplarına her giriş yaptıklarında uzun bir süre yapılabilmelidir.

user/ 

ve daha sonra istenmeyen görüntüleri koymak için yer del adında bir klasör içinde bu:

user/del/ 

orada mı ı kullanıcıların resim (ler) depolayan ana klasör varsa Bir dosyayı başka bir klasöre taşımak için komut? Yani demek ki:/'e

user/image1.jpg 

hamle

user/del/image1.jpg 

cevap

284

rename fonksiyonu aynı yerde varolan dosyayı saklamak istiyorsanız bu

docs rename

rename('image1.jpg', 'del/image1.jpg');

kullanmanız gerektiğini yapar copy

docs copy

copy('image1.jpg', 'del/image1.jpg');

bu neredeyse bu fonksiyon aynı zamanda verilen dosya POST aracılığıyla yüklenen bir dosya olup olmadığını kontrol eder, bu örneğin önler rename aynı olmasına rağmen Yüklenen bir dosya move_uploaded_file kullanmak taşımak isterseniz o yerel bir dosya

docs move_uploaded_file

dokümanlardan
$uploads_dir = '/uploads'; 
foreach ($_FILES["pictures"]["error"] as $key => $error) { 
    if ($error == UPLOAD_ERR_OK) { 
     $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; 
     $name = $_FILES["pictures"]["name"][$key]; 
     move_uploaded_file($tmp_name, "$uploads_dir/$name"); 
    } 
} 

program parçası, mikroişlemciyi taşınır

+2

:-) bela için –

62

kullanın rename() fonksiyonu haline gelir.

rename("user/image1.jpg", "user/del/image1.jpg"); 
+2

kadar basit! teşekkürler :) Yani basit –

+1

bir rozet! Teşekkürler :) –

0

ben orijinal dosya adını tutmak ile yeni yolda dosyayı taşımak istiyorum. Bu kullanın:

$source_file = 'foo/image.jpg'; 
$destination_path = 'bar/'; 
rename($source_file, $destination_path . pathinfo($source_file, PATHINFO_BASENAME));