我有一个实时和运行的流星应用程序,我测试了在桌面上上传图像,它们工作正常。但是,当我尝试我的iphone游戏时,它会崩溃并重新加载页面。
如果您要从移动设备上传图片,设置之间是否存在差异?我正在使用Collection FS。请注意,这不是IOS应用程序,而是从移动浏览器上传。
这是相关代码
HTML
<div class="fileUpload btn btn-success btn-lg pull-right visible-xs visible-sm">
<span class=""><i class="fa fa-camera"></i></span>
<input type="file" class="myFileInput" accept="image/*" />
</div>
CLIENT SIDE
'change .myFileInput': function(event, template) {
var user = Meteor.user();
var files = event.target.files;
var fsFile = new FS.File(files[0]);
fsFile.username = user.username;
var newImage = Images.insert(fsFile, function(err, response, fileObj) {
if (err) {
console.log(err)
} else {
console.log('success');
}
});
}
SERVER SIDE
var profileThumbsStore = new FS.Store.S3('thumb', {
accessKeyId: Meteor.settings.key,
secretAccessKey: Meteor.settings.secret,
bucket: Meteor.settings.bucket,
folder: 'thumb',
transformWrite: function(fileObj, readStream, writeStream) {
gm(readStream, fileObj.name()).resize("100", "100").stream().pipe(writeStream);
}
});
var profileStore = new FS.Store.S3('original', {
accessKeyId: Meteor.settings.key,
secretAccessKey: Meteor.settings.secret,
bucket: Meteor.settings.bucket,
folder: 'original',
transformWrite: function(fileObj, readStream, writeStream) {
gm(readStream, fileObj.name()).resize("500", "500").stream().pipe(writeStream);
}
});
Images = new FS.Collection('images', {
stores: [profileStore, profileThumbsStore],
filter: {
// maxSize: 1048576, // in bytes
allow: {
contentTypes: ['image/*'],
},
onInvalid: function (message) {
if (Meteor.isClient) {
sAlert.error(message);
} else {
sAlert.success(message);
}
}
}
});
就像我提到的,它在桌面上运行正常,所以我不明白为什么它不能用于iPhone。
任何帮助将不胜感激。
答案 0 :(得分:1)
尝试使用FS.Utility
- 我在移动设备和浏览器中使用它,它就像一个冠军!
'change .myFileInput': function(event, template) {
var user = Meteor.user();
FS.Utility.eachFile(ev, function(file){
file.username = user.username;
var newImage = Images.insert(file, function(err, response, fileObj) {
if (err) {
console.log(err)
} else {
console.log('success');
}
});
}
}