自分のウェブサイト上のユーザーがアップロードした後に、それらが不要になった場合は、サーバーから自分の画像を削除できるようにする必要があります。私は以前PHPでunlink
関数を使用していましたが、これはかなり危険でセキュリティ上の問題になる可能性があると言われてきました。 (下記の前のコード:)
if(unlink($path.'image1.jpg')){
// deleted
}
代わりに、ファイルを別のフォルダに移動したいと思います。彼らが最初にファイルをアップロードした後、これは長い間行われることができなければならないので彼らが彼らのアカウントにログインする時はいつでも。私はユーザーの画像を格納するメインフォルダを持っている場合:
user/
そしてその中にdelと呼ばれるフォルダがあり、それが彼らの不要な画像を置く先です。
user/del/
ファイルを別のフォルダに移動するコマンドはありますか?だからそれは言う:
user/image1.jpg
/になる
user/del/image1.jpg
rename
関数はこれを行います
rename('image1.jpg', 'del/image1.jpg');
既存のファイルを同じ場所に保存したい場合はcopy
を使用してください。
copy('image1.jpg', 'del/image1.jpg');
アップロードされたファイルを移動したい場合はmove_uploaded_file
を使用します。これはrename
とほぼ同じですが、この関数は与えられたファイルがPOST
を介してアップロードされたファイルであることも確認します。
$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");
}
}
ドキュメントからのコードスニペット
rename() 関数を使用してください。
rename("user/image1.jpg", "user/del/image1.jpg");
元のファイル名を付けて新しいパスにファイルを移動したい場合。これを使って:
$source_file = 'foo/image.jpg';
$destination_path = 'bar/';
rename($source_file, $destination_path . pathinfo($source_file, PATHINFO_BASENAME));
私はシェルを使用してすべてのデータファイルを読み取り、それから配列に割り当てます。それから私は一番上の位置にファイルを移動します。
i=0
for file in /home/*.gz; do
$file
arr[i]=$file
i=$((i+1))
done
mv -f "${arr[0]}" /var/www/html/
それを移動するための関数を作成します。
function move_file($file, $to){
$path_parts = pathinfo($file);
$newplace = "$to/{$path_parts['basename']}";
if(rename($file, $newplace))
return $newplace;
return null;
}
いくつかの解決策は、最初にファイルをcopy()し(先に述べたように)そして宛先ファイルが存在するとき - 以前のローカライズからのunlink()ファイルです。また、リンクを解除する前にMD5チェックサムを検証して確認することもできます。
copy() および unlink() functionを使用
$moveFile="path/filename";
if (copy($csvFile,$moveFile))
{
unlink($csvFile);
}