2014-06-24 7 views
0

Meteor의 CollectionFS를 사용 중이며 서버에 업로드 된 이미지 파일을 표시하려고합니다. 의 I의 한 같은 다른 개체의 파일 객체에 대한 참조를 첨부 :Meteor로 FS.File 오브젝트의 파일 URL 가져 오기

Entries.insert({ 
    title: title, 
    caption: caption, 
    file: fsFile, 
    }); 

내가 Entries.find({})를 호출하고 내가 항목을 반복하는 데 사용하는 템플릿, 해당를 반환합니다. <img src="file.url">을 시도했지만 작동하지 않습니다.

이미지 컬렉션을 직접 호출하면 Images.find({})이 제대로 작동하고 파일을 반복하여 파일 컨텍스트 this.url으로 URL을 가져옵니다. Entires 개체의 참조를 사용하여 비슷한 방법이 있습니까?

+1

확인 문서의이 부분 : https://github.com/CollectionFS/Meteor-CollectionFS#storing이 경우 다음과 같은 방법으로 파일의 URL을 얻을 수 있습니다 -fsfile-references-in-your-objects fsFile은 파일에 대한 참조 일뿐입니다. 이미지의 데이터를 가져 오려면 file.getFileRecord() 메서드를 사용해야합니다. 이것은 이미지가 구독 된 경우에만 작동합니다. 안전하지 않거나 자동 게시를 사용하지 않으면 혼자서 조인을해야합니다. – chaosbohne

+0

그래. 조인을해야하지만'getFileRecord()'는 많은 정보를주지 않는다. submit 이벤트를 처리 할 곳에'FS.debug = true'를 넣으십시오. 브라우저 콘솔에서'/ cfs/files//' – Prashant

답변

3

이 같은 시도 : 당신이 게시하고 CFS 파일에 가입하지 않은 경우, 파일을 (노트 내가 밑줄 패키지를 사용하고)

Template.image_queue.helpers({ 
    images: function() { 
     return _.map(Images.find().fetch(), function(image) { 
      return image.url(); 
     }); 
    } 
}); 

Images = new FS.Collection("images", { 
    stores: [new FS.Store.FileSystem("images", { 
     path: "~/uploads" 
    })] 
}); 

Images.allow({ 
    insert: function (userId, party) { 
     return true; 
    }, 
    update: function (userId, party) { 
     return true; 
    }, 
    remove: function (userId, party) { 
     return true; 
    }, 
    download: function (userId, party) { 
     return true; 
    } 
}); 
+0

링크가 만들어지는 것을 볼 수 있습니다. 정말 고마워요 !! – Ash

+0

은 잘 작동하며 일반적으로 일반적인 {{this.url}} 솔루션은 특히 다른 컬렉션에서 이미지를 참조 할 때 융통성이 없기 때문에 내가 찾은 최상의 솔루션입니다. 내가 발견 한 유일한 단점은 핸들러가 각 이미지에 대해 두 번 호출된다는 것입니다. 나는 이것을 다음과 같이 사용했다 : var result = _.map (welcomeImages.find ({ "_ id": imageId}) .fetch(), function (image) { return image.url(); }); while 메인 콜렉션을 루핑 (looping)하는데, 여기서'imageId'는 이미지에 대한 참조입니다. –

2

을 Asuming을 .url은 정의되지 않은 값을 반환합니다.

예를 들어
/cfs/files/{cfs_collection_name}/{fs_file_id} 

:

<img src="/cfs/files/images/{{ file._id }}">