MongoDB에 파일을 저장하려면 어떻게 해야 합니까?
사용자가 선택한 파일을 MongoDB에 저장하고 싶습니다.BSON 객체에 파일을 올바르게 추가하려면 어떻게 해야 합니까?제 접근 방식이 올바르지 않으면 올바른 방향을 가리켜 주십시오.
아래는 고객 코드입니다.이 jQuery 함수는 모든 입력 필드에 있는 텍스트(파일 부분에 대한 도움말 필요)를 수집하여 BSON 개체로 서버에 보냅니다.
$('#add').click(function()
{
console.log('Creating JSON object...');
var classCode = $('#classCode').val();
var professor = $('#professor').val();
var description = $('#description').val();
var file = $('#file').val();
var document =
{
'classCode':classCode,
'professor':professor,
'description':description,
'file':file,
'dateUploaded':new Date(),
'rating':0
};
console.log('Adding document.');
socket.emit('addDocument', document);
});
양식의 HTML:
<form>
<input type = 'text' placeholder = 'Class code' id = 'classCode'/>
<input type = 'text' placeholder = 'Document description' id = 'description'/>
<input type = 'text' placeholder = 'Professor' id = 'professor'/>
<input type = 'file' id = 'file'/>
<input type = 'submit' id = 'add'/>
</form>
CoffeeScript의 서버 사이드 코드:
#Uploads a document to the server. documentData is sent via javascript from submit.html
socket.on 'addDocument', (documentData) ->
console.log 'Adding document: ' + documentData
db.collection 'documents', (err, collection) ->
collection.insert documentData, safe:false
return
파일 크기가 16메가바이트 미만이면 GridFS의 복잡성을 추가하는 대신 BSON 문서에 파일을 포함시킬 수 있습니다.
BSON에는 모든 드라이버가 액세스를 제공해야 하는 이진 데이터 유형이 있습니다.
파일이 텍스트 파일이면 UTF8 문자열로 저장할 수 있습니다.
MongoDB에 파일을 저장하려면 GridFS를 사용해야 합니다.
GridFS 작업에 대한 몇 가지 자습서(예)를 찾을 수 있습니다.
MongoDB Driver's API를 확인하고 프로젝트에 구현해 보십시오.
GridFS를 사용해야 하는 경우
공식 문서에서: https://docs.mongodb.com/manual/core/gridfs/ #사용할 때-gridfs
MongoDB에서 GridFS를 사용하여 16MB보다 큰 파일을 저장합니다.
경우에 따라 시스템 수준 파일 시스템보다 MongoDB 데이터베이스에서 대용량 파일을 저장하는 것이 더 효율적일 수 있습니다.
파일 시스템이 디렉터리의 파일 수를 제한하는 경우 GridFS를 사용하여 필요한 만큼의 파일을 저장할 수 있습니다.
전체 파일을 메모리에 로드할 필요 없이 대용량 파일의 일부에서 정보에 액세스하려는 경우 GridFS를 사용하여 전체 파일을 메모리에 읽지 않고 파일 섹션을 호출할 수 있습니다.
파일과 메타데이터를 자동으로 동기화하여 여러 시스템 및 시설에 배포하도록 유지하려는 경우 GridFS를 사용할 수 있습니다.지리적으로 분산된 복제본 세트를 사용하는 경우 MongoDB는 파일과 해당 메타데이터를 여러 mongod 인스턴스 및 시설에 자동으로 배포할 수 있습니다.
전체 파일의 내용을 원자적으로 업데이트해야 하는 경우 GridFS를 사용하지 마십시오.또는 각 파일의 여러 버전을 저장하고 메타데이터에 파일의 현재 버전을 지정할 수 있습니다.파일의 새 버전을 업로드한 후 원자력 업데이트에서 "최신" 상태를 나타내는 메타데이터 필드를 업데이트하고, 필요한 경우 나중에 이전 버전을 제거할 수 있습니다.
또한 파일이 모두 16MB BSON 문서 크기 제한보다 작은 경우에는 GridFS를 사용하는 대신 단일 문서에 파일을 수동으로 저장하는 것이 좋습니다.BinData 데이터 유형을 사용하여 이진 데이터를 저장할 수 있습니다.BinData 사용에 대한 자세한 내용은 드라이버 설명서를 참조하십시오.
언급URL : https://stackoverflow.com/questions/13907509/how-do-i-save-a-file-to-mongodb
'programing' 카테고리의 다른 글
파이어베이스 호스팅이 앱을 표시하지 않습니까? (0) | 2023.06.23 |
---|---|
Mongo 필드 A가 필드 B보다 큼 (0) | 2023.06.23 |
iis에서 작업자 프로세스로 인한 CPU 사용을 100% 방지하는 방법 (0) | 2023.06.23 |
Android에서 텍스트를 클립보드에 복사하는 방법? (0) | 2023.06.23 |
사이드바에 페이지 추가 (0) | 2023.06.23 |