내가 GridFS를 사용하여 MongoDB로 PDF - 파일의 무리를 삽입하지만, 메시지와 함께 MongoGridFSException
얻기 위해 노력하고 있어요 : 이름이있다 경로에 파일 에게 이름을 설정 오류 파일 시스템의 pdf 문서에 대한 절대 경로.파일 삽입
나는 매우 간단한 CLI 스크립트를 사용하고 있습니다 :
$it = new DirectoryIterator(__DIR__ .'/files');
while ($it as $file) {
$grid->storeFile($file->getPathname(), array('metadata' => $metadata));
}
내가 방해 GridFS에 대한 문서의 부족을 찾을 수 있습니다. MongoGridFS 및 storeFile()의 예제는 모두 첫 번째 인수로 단순한 파일 이름을 표시합니다. 데이터가이 파일 이름에서 검색되면 스크립트가 수행하는 기본 경로 (cwd
, __DIR__
또는 완전히 다른 무언가가 있습니까?) 또는 절대 경로를 추가 할 수 있습니까?
대신 storeBytes(file_get_contents($file->getPathname())
을 사용하려고했으나 파일 이름이 없는데 어떻게 파일을 검색합니까? 두 번째 인수 (options-array)에 파일 이름을 추가합니까?
또한 저장된 파일의 광산/유형을 알고 싶다면 수동으로 메타 데이터에 지정해야합니까? 아니면 파일을 삽입 할 때 자동으로 결정됩니까?
TL : DR : GridFS로 작업하는 방법을 모르고 있으며 php-docs의 품질이 좋지 않습니다. 최소한 누군가가 더 나은 예제/문서를 지적 할 수 있습니까?
방금 질문을 편집하려고했습니다. 어떤 종류의 인코딩 문제가 경로에 문자를 엉망으로 만들어 초기 문제의 원인이 된 것 같습니다. 불행히도 스크립트를 실행하면 PHP가 아니라 MongoDB에서 온 것으로 보이는 "Segmentation fault"가 반환됩니다. 아마'$ extras'의 어떤 것 때문일 것입니다. – dbrumann
MongoDB에 보내는 내용에 var_dump를 수행하고 Mongo 쉘에서 명령을 다시 작성하십시오. 그러면 seg 결함이 있는지보십시오. 또한 사용중인 MongoDB의 버전을 확인하고 사용중인 MongoDB PHP 확장 버전에 알려진 문제가 있는지 확인하십시오. (phpinfo()에서 가져 오기) –
내 예제에서 자동으로 추가되는 필드를 볼 수 있습니다. 어떤 필드를 추가해야하는지 알려줍니다. 내 예제에서는 실제로 length 속성을 복사하고 크기를 'size'라고 부릅니다. 필요한 경우 MIME 형식을 추가해야합니다. 나중에 사용하기 쉽도록 경로없이 파일 이름을 저장하려고 할 수 있습니다. –