태그 보관물: unlink

unlink

PHP-파일을 서버의 다른 폴더로 이동 그 이후에는 이것이 매우 위험하고

웹 사이트 사용자가 더 이상 원하지 않는 경우 이미지를 업로드 한 후 서버에서 이미지를 삭제하도록 허용해야합니다. 나는 이전 unlink에 PHP 에서 함수를 사용하고 있었지만 그 이후에는 이것이 매우 위험하고 보안 문제가 될 수 있다고 들었습니다. (이전 코드 🙂

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예를 들어 로컬 파일이 이동되는 것을 방지합니다.

docs move_uploaded_file

$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));

답변

일부 솔루션은 먼저 파일을 위에서 언급 한대로 복사 ()하고 대상 파일이 존재하는 경우 이전 현지화에서 unlink () 파일을 해제합니다. 또한 연결을 해제하기 전에 MD5 체크섬을 확인하여 확실하게 확인할 수 있습니다


답변

이동할 함수를 작성하십시오.

function move_file($file, $to){
    $path_parts = pathinfo($file);
    $newplace   = "$to/{$path_parts['basename']}";
    if(rename($file, $newplace))
        return $newplace;
    return null;
}

답변

쉘을 사용하여 모든 데이터 파일을 읽은 다음 배열에 할당하십시오. 그런 다음 파일을 최상위 위치로 옮깁니다.

i=0
for file in /home/*.gz; do
    $file
    arr[i]=$file
    i=$((i+1))
done
mv -f "${arr[0]}" /var/www/html/

답변

사용 사본 ()연결 해제 () 함수

$moveFile="path/filename";
if (copy($csvFile,$moveFile))
{
  unlink($csvFile);
}