所以我不知道标题是否足够清楚,我想做的是在Meteor App中拥有一个工具,可以将文件上传到我的MongoDB中,并输出一个URL,我可以用它来显示作为一个的src
但是,我创建了我的收藏集:

export const Files = new Mongo.Collection('files');


和一个addFile函数:

export const addFile = (nameArg: String, dataURL: String) => {
 Files.insert({
  _id: uuid(),
  name: nameArg,
  url: dataURL
 });
console.log("file "+nameArg+" added");
};


然后我使用react-jsonschema-form包显示文件格式

<Form
  schema={{
    type: 'object',
    properties: {
       file: {
         type: 'string',
         title: 'Upload an image to get its URI'
         }
       }
  }}
  uiSchema={{
    file: {
       'ui:widget': 'file'
    }
  }}
  onChange={this.onChange}
  liveValidate
  >
  <div />
</Form>


我的onChange函数:

onChange = (e: { formData: { file: string } }) =>{
  const [dataType, nameBis,] = e.formData.file.split(';');
  const name = nameBis.split('=')[1];
  Promise.resolve().then(addFile(name, e.formData.file));

}


我想使用地址sush作为window.location.host+'/file/'+name
才能使用此图像。
我相信这是可能的,但是怎么办呢?

感谢您的所有回复:)

最佳答案

使用包cfs:standard-packagescfs:filesystem可以以安全的方式实现。坦白地说,我没有深入探讨您的问题。

这是一个美丽的包装。您可以在here packages in depth以上阅读。

创建文件系统集合的代码

var imageStore = new FS.Store.FileSystem("YOUR_COLLECTION_NAME");

YOUR_COLLECTION_NAME = new FS.Collection("YOUR_COLLECTION_NAME", {
  stores: [imageStore]
});


简而言之。文件将保存在同级文件中的bundle/位置。有关文件的信息将保存在集合cfs/files/YOUR_COLLECTION_NAME中,临时位置将用于集合cfs.YOUR_COLLECTION_NAME.filerecord的内部用途,如下所示。

如果使用上述软件包保存任何文件。元数据将如下所示保存在cfs._tempstore.chunks

{
    "_id" : "TBmxbsL2cMCM2tEc7",
    "original" : {
        "name" : "photo.jpg",
        "updatedAt" : ISODate("2017-07-06T12:54:50.115Z"),
        "size" : 2261,
        "type" : "image/jpeg"
    },
    "uploadedAt" : ISODate("2017-07-08T06:58:32.433Z"),
    "copies" : {
        "YOUR_COLLECTION_NAME" : {
            "name" : "photo.jpg",
            "type" : "image/jpeg",
            "size" : 2261,
            "key" : "YOUR_COLLECTION_NAME-TBmxbsL2cMCM2tEc7-photo.jpg",
            "updatedAt" : ISODate("2017-07-08T06:58:32.475Z"),
            "createdAt" : ISODate("2017-07-08T06:58:32.475Z")
        }
    }
}


在客户端,您可以使用以下链接获得文档文件的链接

cfs.YOUR_COLLECTION_NAME.filerecord

此url是基于令牌的安全链接,指向文件,而不是服务器的直接位置。您可以像正常收藏一样设置其他允许/拒绝设置来下载ans内容。希望这可以帮助!

09-18 08:35