2013-09-30 1 views
5

우리는 대용량 파일 (2MB ~ 5MB)이 될 수 있도록 월페이퍼 용 사이트를 만들려고하므로 데이터베이스 대신 디스크 공간에 이미지를 저장해야하며 데이터베이스 경로 만 필요합니다. 그래서 당신이 다른 제안을하지 않는 한 당신이 그것을하는 방법에 대한 아이디어를 줄 수 있다면 (우리가 지금 알고있는 방법은 업로드 기능으로 PHP 스크립트를 만들고 PC에서 이미지를 수동으로 선택하여 업로드하는 것입니다). 튜토리얼을 많이 주시면 감사하겠습니다. 고마워요!파일 시스템 (인터넷)에 이미지를 저장하고 데이터베이스 경로를 저장하는 방법은 무엇입니까?

이것은 관리자가 사용자가 아닌 이미지를 추가하기위한 것입니다. 참고 : 우리는 어떤 스크립트도 개발하지 않았으므로, 우리가이 스크립트에서 사용할 수있는 아이디어를 얻으려고합니다. 아무도 PHP 스크립트를 사용하지 않을 것이라고 생각한다면.

+1

<form action="PHP_FILE_PATH.php" method="post" enctype="multipart/form-data"> <input type="file" name="image" /> <input type="submit" name="submit" value="Upload" /> </form> 

당신은 아무것도 시도하지 적이 있습니까? 자습서를 인터넷 검색? 몇 줄 쓰기? 적절한 해결책을 찾을 수 있도록 비계를 만들어보십시오. –

+0

제안한대로해야합니다. 문제가 발생하면 다시 돌아와 도움을 요청하십시오. 코드 예를 들어주십시오. – Sven

+0

파일을 업로드하는 가장 좋은 방법은 무엇입니까? –

답변

4

양식 는 PHP 부

<?php 
if($_FILES['image']['name']) 
{ 
    $save_path="FOLDER_PATH_TO_SAVE_UPLOADED_IMAGE"; // Folder where you wanna move the file. 
    $myname = strtolower($_FILES['image']['tmp_name']); //You are renaming the file here 
    move_uploaded_file($_FILES['image']['tmp_name'], $save_path.$myname); // Move the uploaded file to the desired folder 
} 

$inser_into_db="INSERT INTO `database`.`table` (`folder_name`, `file_name`) VALUES('$save_path', '$myname'))"; 

?> 
+0

. 감사! –

+2

그리고 @Paul이 여기에 또 다른 대답으로 말한 것처럼, 일부 논리에서는 각 파일의 이름을 PHP microtime이라고 말하고,'$ myname' 변수에 사용합니다. 여기에 입력 한 대답은 단지 간단한 예일뿐입니다. –

6

업로드 된 각 파일에 대해 UUID를 생성하고 디스크의 파일 이름으로 사용하십시오. 이를 통해 충돌, 파일 이름 삭제 및 경로 탐색 취약점이 방지됩니다.

(1, "Green field", "0D729DCD-5116-4480-81CE-90A0380B557A.png")과 같은 값인 (id, description, filename)과 같은 표가 있습니다.

다음으로 한 폴더에 너무 많은 파일이있는 문제를 피하고자합니다. 많은 FSes에 대한 파일 시스템 제한에 부딪 힐 수 있습니다.

이 문제를 해결하려면 파일 이름의 처음 몇 글자를 기준으로 디렉터리를 만드십시오. 0D729DCD-5116-4480-81CE-90A0380B557A.png의 경우 /0/D/7/0D729DCD-5116-4480-81CE-90A0380B557A.png에 저장합니다.

+0

감사합니다. @Paul, 나는 첫 글자 대신 달이나 다른 이름으로 폴더 이름을 사용할 수 있다고 생각하지만 훌륭한 제안입니다. 실제로 –

관련 문제