programing

사이트에 사진을 업로드하고 저장하는 가장 좋은 방법은 무엇입니까?

bestcode 2022. 9. 17. 10:46
반응형

사이트에 사진을 업로드하고 저장하는 가장 좋은 방법은 무엇입니까?

대형 웹사이트들이 어떻게 사진을 서버에 저장하는지 모르겠어요.유저가 올린 사진을 데이타베이스에 보존하는 방법을 가르쳐 주실 수 있습니까?

혹시 파일(사진)을 어떤 경로로 저장하고 그 경로를 데이터베이스에 저장하면 되지 않을까 생각했습니다.

하지만 난 이렇게 하고 싶어.이게 맞나예를 들어 다음과 같은 이름의 웹 사이트입니다.www.photos.com사용자가 사진을 업로드 할 때 사용자 이름의 폴더를 만들고 해당 폴더에 사진을 저장합니다.

다음 방법으로 디렉토리를 만들 수 있을 것 같습니다.php file concepts그래서 새로운 사용자가 자신의 사진이나 파일을 업로드 할 때 나는 그의 이름으로 디렉토리를 만들고 싶다.

예: 사용자 이름이 john인 경우 photos.com에 다음과 같은 디렉토리를 만듭니다.www.photos.com/john/사진을 업로드 할 때 이 디렉토리에 모든 사진을 저장합니다.이렇게 하는 게 맞습니까?

서버에 파일을 저장하는 방법에 대해 잘 아는 사람이 여기 없습니다만, 방법을 가르쳐 주시겠습니까?나는 그것을 올바르고 안전한 방법으로 하고 싶다.

모든 대형 웹사이트는 사진을 데이터베이스에 저장하지 않고 디스크에 저장합니다.그림의 위치에 대한 참조를 테이블에 저장합니다.그리고 거기서 링크합니다.

왜요? 퍼포먼스.

데이터베이스에서 무거운 콘텐츠를 꺼내는 것은 성능 병목현상이 매우 큽니다.그리고 데이터베이스는 수평적으로 잘 확장되지 않기 때문에 더 큰 문제가 발생할 수 있습니다.모든 대형 사이트는 정적 콘텐츠 팜을 사용하여 이미지와 같은 정적 콘텐츠를 처리합니다.고객님의 신상정보에 전혀 신경 쓰지 않는 서버입니다.

어떻게 사진을 비밀에 부칠 수 있을까요?그들은 그렇지 않다.

사진의 링크는, 그 자체로 주소와 패스워드입니다.페이스북을 예로 들어보자.내 계정에 개인 사진을 저장하면 당신은 그것을 열 수 없을 것입니다.하지만 정확한 주소만 알고 있다면 가능합니다.

이 사진비공개입니다.파일명에 주의해 주세요.
10400121_87110566301_7482172_n.jpg
(링크가 끊어질 수 있도록 URL을 수시로 변경)

순차적이지 않습니다.사진을 얻는 유일한 방법은 그것의 주소를 아는 것이다.
이전 사용자 사진으로는 다음 사용자 사진을 추측할 수 없습니다.
엔트로피가 크기 때문에 무작위로 추측하기 시작해도 많은 실패가 발생할 수 있습니다.또한 사진에 도달하면 소유자의 신원을 인식할 수 없게 됩니다.그것 자체가 익명의 보호입니다.

편집(이미지를 「사용자명」폴더에 보존하지 않는 이유:
편집 후 파일을 데이터베이스가 아닌 디스크에 저장하려는 의도가 분명해졌습니다.이 편집에서는 새로운 시나리오를 다룹니다.

논리(사용자당 폴더 만들기)가 더 체계화되더라도 많은 사용자와 사진이 생기기 시작하면 문제가 발생합니다.서버의 디스크 공간이 1T라고 가정해 보겠습니다.또한 서버가 처리할 수 있는 부하에 대해 1T가 어느 정도 정확하다고 가정해 보겠습니다.

이제 11명의 사용자가 동시에 업로드를 시작하고 각 사용자가 100GB 이상의 파일을 업로드한다고 가정합니다.각 서버가 91GB에 도달하면 서버가 가득 차므로 이미지를 다른 서버에 저장해야 합니다.이 사용자/폴더 구조를 따를 경우 사용자 중 하나를 선택하고 해당 사용자의 모든 데이터를 다른 서버로 마이그레이션해야 합니다.또한 파일에 1T 이상 업로드 할 수 없는 사용자에게는 하드 제한을 가합니다.

그럼 모든 파일을 같은 폴더에 저장해야 하나요?
아니요. 일반적으로 빅사이트는 폴더당 x개의 정의된 파일 수가 있는 순차 폴더(/000001/, /000002/ 등)에 파일을 저장합니다.이는 주로 파일 시스템 성능 문제를 위한 것입니다.

디렉토리 내의 파일 수에 대한 자세한 내용은 너무 많습니까?

일반적으로 데이터베이스에 이미지를 저장하는 것은 좋지 않습니다(사이트가 인기 있는 경우).기존에는 데이터베이스가 대부분의 애플리케이션에서 주요 병목 현상 중 하나였습니다.필요 이상으로 로드할 필요는 없습니다.이미지가 파일 시스템에 있는 경우 많은 http 서버(nginx 등)가 가장 효율적으로 처리합니다.

러시아에서 가장 큰 소셜 네트워크인 Vkontakte는 바로 이러한 작업을 수행합니다. 바로 파일 시스템에 이미지를 저장하는 것입니다.

또 다른 대형 소셜 네트워크는 정교한 확장 가능한 블럽 스토리지를 구현했습니다.하지만 AFAIK는 일반인이 이용할 수 없습니다.

이 답변의 요약: 데이터베이스에 블럽을 저장하지 마십시오.

이렇게 하는 것이 옳은가?

★★★.
이름이 아니라 아이디를 사용하는 게 좋을 것 같아요.
www.photos.com/albums/1234/단은괜??? ??

이미지 관리는 이미지를 서버에 물리적으로 업로드한 후 파일 위치와 이미지 세부 정보를 데이터베이스에 기록하는 것이 가장 좋습니다.그 후 사용자가 텍스트 검색, 부품 번호 검색 또는 기타 쿼리를 수행할 수 있도록 검색 양식을 구성할 수 있습니다.테이블에 있는 데이터를 기반으로 유효한 HTML 이미지 태그를 생성하기 위해 PHP 스크립트를 작성할 수 있습니다.

MySQL™ BLOB 필드에 이미지를 업로드하는 것은 좋지 않습니다. 이미지가 미리 보기보다 훨씬 크면 이러한 이미지 데이터가 일반적으로 문제가 됩니다.이미지가 클 경우 SQL INSERT 문을 한 번에 하나씩 복사/붙여넣어야 할 수 있습니다(phpMyAdmin에).이미지가 크고 텍스트 편집기에 의해 SQL INSERT 문이 두 줄로 분할되면 이미지를 복원할 수 없습니다.

언급URL : https://stackoverflow.com/questions/8922056/what-is-the-best-way-to-upload-and-store-pictures-on-the-site

반응형