programing

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

copyandpastes 2021. 1. 16. 10:59
반응형

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


큰 웹 사이트가 서버에 사진을 저장하는 방법을 모르겠습니다. 누구든지 사용자가 업로드 한 사진을 데이터베이스에 저장하는 방법을 알려줄 수 있습니까?

나는 그들이 어떤 경로에 파일 (그림)을 저장하고 그 경로를 databse에 저장하는 것이 맞습니까?

하지만 저는 이렇게하고 싶습니다. 이게 옳은 거니? 예를 들어 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 는 정확히이 작업을 수행합니다. 이미지를 파일 시스템에 저장합니다.

또 다른 대형 소셜 네트워크는 정교하고 확장 가능한 Blob 저장소를 구현했습니다. 그러나 AFAIK는 대중에게 공개되지 않습니다.

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


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

MySQL ™ BLOB 필드에 이미지를 업로드하는 것은 이미지가 썸네일보다 훨씬 큰 경우 일반적으로 이러한 이미지 데이터가 문제가되는 나쁜 생각입니다. 이미지가 크면 한 번에 하나의 SQL INSERT 문을 phpMyAdmin에 복사 / 붙여 넣기해야 할 수 있습니다. 이미지가 크고 SQL INSERT 문이 텍스트 편집기에 의해 두 줄로 나뉘어 진 경우 이미지를 복원 할 수 없습니다.


이것이 올바른 방법입니까?

예.
이름이 아니라 이드를 사용하라고 제안하는 유일한 것.
www.photos.com/albums/1234/우선 괜찮을 것입니다.

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

반응형