我正在使用Meteor和React JS。我还添加了Meteor Files。
https://github.com/VeliovGroup/Meteor-Files
使用此代码,
this.Images = new FilesCollection({collectionName: 'Images'});
export default class Logo extends TrackerReact(React.Component){
constructor(){
...
Meteor.subscribe('files.images.all');
}
uploadLogo(e){
if (e.currentTarget.files && e.currentTarget.files[0]) {
// We upload only one file, in case
// there was multiple files selected
var file = e.currentTarget.files[0];
if (file) {
var uploadInstance = Images.insert({
file: file,
streams: 'dynamic',
chunkSize: 'dynamic',
transport: 'http'
}, false);
uploadInstance.on('start', function() {
//template.currentUpload.set(this);
});
uploadInstance.on('end', function(error, fileObj) {
if (error) {
alert('Error during upload: ' + error.reason);
} else {
console.log("done");
alert('File "' + fileObj.name + '" successfully uploaded');
}
});
uploadInstance.start();
}
}else{
console.log("error");
}
}
render(){
...
<input type="file" id="fileinput" onChange={this.uploadLogo.bind(this)} />
}
我可以上传文件,但是我的目录中没有看到任何文件。 这是我的publish.js,
this.Images = new Meteor.Files({
debug: true,
collectionName: 'Images',
allowClientCode: false, // Disallow remove files from Client
onBeforeUpload: function (file) {
// Allow upload files under 10MB, and only in png/jpg/jpeg formats
if (file.size <= 1024*1024*10 && /png|jpg|jpeg/i.test(file.extension)) {
return true;
} else {
return 'Please upload image, with size equal or less than 10MB';
}
}
});
Meteor.publish('files.images.all', function () {
return Images.find().cursor;
});
如何显示图像?如何限制用户上传仅为图像的文件?
对我来说,他们的API文档并不丰富。我无法理解他们在文档中谈论的内容。
答案 0 :(得分:1)
默认情况下,上传的文件存储在文件系统中。阅读常见问题:
默认情况下存储的文件在哪里?:默认情况下为config.storagePath 没有传递给Constructor,它等于assets / app / uploads和 相对于运行脚本:
- 在开发阶段: yourDevAppDir / .meteor / local / build / programs / server
注意:所有文件 将在应用程序重建或运行meteor后立即删除 重启。要在开发过程中保持存储的持久性,请使用 项目文件夹之外的绝对路径,例如/ data目录。
- 在制作时:yourProdAppDir / programs / server
因此您需要使用 config.storagePath
设置位置