Meteor FS link 导致 404 错误
Meteor FS link leads to 404 Error
我目前正在开发一个 Meteor React 应用程序,它使用 ostrio:files 包将音频文件存储在名为 Files 的集合中。在另一个(常规 mongo)集合中,我在转换函数中使用以下代码将具有 link 的文档 "join" 转换为音频文件:
transform: function(doc){
let curAudio = doc.audio;
let audioFile = Files.collection.findOne({_id: curAudio.file_id});
if(audioFile){
curAudio.audioLink = Files.link(audioFile);
curAudio.audioLength = audioFile.meta.length;
curAudio.audioSize = audioFile.size;
doc.audio = curAudio;
}
return doc;
}
这似乎工作得很好,因为结果 audio.audioLink 类似于
http://localhost:3000/cdn/storage/files/8Q7WwEXyJSkNWwFQa/original/8Q7WwEXyJSkNWwFQa.m4a
但是当我尝试做这样的事情时
<audio controls preload="none" style={{width: "480px"}}>
<source src={track.audioLink} type="audio/mp4"/>
<p>Your browser does not support HTML5 audio.</p>
</audio>
为了能够播放该文件,一切正常,直到我单击 HTML5 播放器的播放按钮。然后,chrome 输出到控制台,服务器在应该加载文件时返回 404。我测试将 link 放入地址栏,这里服务器响应只是
File Not Found :(
有人知道如何解决这个问题吗?
我找到了答案:
我的本地 Ubuntu 安装显然配置为将上传的文件存储在 /tmp 中,在我重新启动系统或以其他方式清除我的临时文件之前,这不会导致问题。让服务器重新创建数据库解决了这个问题。
我目前正在开发一个 Meteor React 应用程序,它使用 ostrio:files 包将音频文件存储在名为 Files 的集合中。在另一个(常规 mongo)集合中,我在转换函数中使用以下代码将具有 link 的文档 "join" 转换为音频文件:
transform: function(doc){
let curAudio = doc.audio;
let audioFile = Files.collection.findOne({_id: curAudio.file_id});
if(audioFile){
curAudio.audioLink = Files.link(audioFile);
curAudio.audioLength = audioFile.meta.length;
curAudio.audioSize = audioFile.size;
doc.audio = curAudio;
}
return doc;
}
这似乎工作得很好,因为结果 audio.audioLink 类似于
http://localhost:3000/cdn/storage/files/8Q7WwEXyJSkNWwFQa/original/8Q7WwEXyJSkNWwFQa.m4a
但是当我尝试做这样的事情时
<audio controls preload="none" style={{width: "480px"}}>
<source src={track.audioLink} type="audio/mp4"/>
<p>Your browser does not support HTML5 audio.</p>
</audio>
为了能够播放该文件,一切正常,直到我单击 HTML5 播放器的播放按钮。然后,chrome 输出到控制台,服务器在应该加载文件时返回 404。我测试将 link 放入地址栏,这里服务器响应只是
File Not Found :(
有人知道如何解决这个问题吗?
我找到了答案: 我的本地 Ubuntu 安装显然配置为将上传的文件存储在 /tmp 中,在我重新启动系统或以其他方式清除我的临时文件之前,这不会导致问题。让服务器重新创建数据库解决了这个问题。