2014-03-26 1 views
1

그래서 여기에 조금 붙어 있습니다. 개인 프로젝트로서, 나는 Newgorunds.com (기능상)과 같은 사이트를 만들려고 노력하고 있으며 막 다른 골목에 섰습니다.PHP 템플릿 페이지로 사용자 파일로드

각 사용자가 업로드 한 파일 유형 (예 : music 폴더)에 대해 루트 디렉토리에 폴더가 있다고 결정했습니다. 폴더 안에는 모든 사용자 이름이 있고 하위 디렉토리 안에는 업로드 된 파일이 있습니다. 나는 파일을 찾기 위해 scandir을 사용해야한다고 생각했다.

내 질문에 가장 최근 업로드 목록을 작성한 다음 사용자가 그 중 하나를 클릭하면 어떻게 플레이어 내에 파일을로드 할 수있는 템플릿 페이지를 열 수 있습니까? (인수를 위해 HTML5 플레이어를 사용하기 위해)?

나는 약간 비슷한 것을 원합니다 : http://www.newgrounds.com/audio/browse/sort/date 사용자 이름이있는 템플릿 페이지에서 파일 (이 경우 음악)을 엽니 다.

답변

2

파일 데이터를 저장하기 위해 데이터베이스를 사용하십시오.

사용자별로 정렬하거나 정렬하는 것이 더 쉽습니다. 예를 들어

모든 파일을 찾을 것입니다 방법 파일 구현을 사용

  • 이 검증되지 않은 이메일 주소
  • 와 사용자가 업로드 한은 MP3에게 있습니다 어제
  • 에서

    • 더 나은 접근 방식

      파일을 업로드 할 때 테이블에 행을 작성하십시오. 행에는 파일 이름, 파일을 소유 한 사용자의 사용자 ID 및 파일 유형이 포함되어야합니다 (최소한).

      그러면 사용자 4의 mp3 파일을 가져 오는 예제 쿼리 인 사용자 파일을 가져올 수 있습니다.

      파일 경로는 데이터베이스가 아닌 다른 위치에 저장해야합니다. 이는 파일을 Amazon S3 또는 CDN으로 이동하는 경우 데이터베이스가 손상되지 않기 때문입니다.

      예 :

      if($file['type'] == "mp3") 
          $pathPrefix = "/files/music/"; 
      else if($file['type'] == "document") 
          $pathPrefix = "/files/docs/"; 
      
      $fullPath = $pathPrefix . $file['filename']; 
      
      echo "Path is " . $fullPath; 
      

      파일의 대상을 변경 한 경우 데이터베이스의 모든 항목 대신이 코드를 간단히 변경할 수 있습니다.

      if($file['type'] == "mp3") 
          $pathPrefix = "http://s3.amazon.com/abc/music/"; 
      else if($file['type'] == "document") 
          $pathPrefix = "http://s3.amazon.com/abc/docs/"; 
      
  • +0

    글쎄, 내가 아는 한, 가입 프로세스는 (또한 자신의 이메일 주소와 비밀번호에 대한 SQL 항목) 사용자의 음악 폴더의 하위 디렉토리를 생성합니다 다음 업로드 양식은에 파일을 업로드합니다 관련 하위 디렉토리에 로그인 할 것이기 때문에 여기에 주요 문제는 파일 이름을로드하는 스크립트를 가져 와서 링크로 인쇄 한 다음 템플릿 페이지로로드하는 것입니다. – Byonex

    +0

    그 접근법은 잘못되었고 지속될 수 없습니다. 나는 당신이 가지고있는 기술적 인 문제를 볼 수있다. 그러나 이것은 데이타베이스 구현없이 이런 식으로 파일을 저장하는 잘못된 접근 방식에 뒤 떨어진다. 데이터베이스는 단순히 파일의 경로를 저장할 수 있습니다. 100 개의 파일이있는 1,000 개의 폴더가있는 폴더는 I/O 제한으로 인해 곧 느려지 기 시작합니다. –

    +0

    @Byonex FWIW, Jake와 동의합니다. 이를 위해 데이터베이스를 사용하는 것이 더 합리적입니다. –

    관련 문제