我一直在尝试保存用户上传的图像以解析时间最长,似乎没有任何工作 - 即使在关注他们的文档时也是如此。
以下是我在多文件上传时用于onChange()
的处理程序。起初我担心多个文件上传,但此时只保存一个图像不起作用。
function fileHandler(event) {
var files = event.target.files;
stopPictures = [];
$("#stop-img-container").empty();
if (files[0] != null) {
$("#stop-img-container").show();
for (var i = 0; i < files.length; i++) {
var file = files[i];
var picReader = new FileReader();
picReader.addEventListener("load",function(event){
var picFile = event.target;
var image = $("<img/>",{
"title": picFile.name,
"class": "stop-image",
"src": picFile.result
}).appendTo("#stop-img-container");
var name = picFile.name;
var dataFile = picFile.result;
var base64str = dataFile.substring(dataFile.indexOf("base64,")+7,dataFile.length);
var parseFile = new Parse.File(name,{base64:base64str}); // saving logs 404 Not Found from POST to "http://api.parse.com/1/files"
var parseFile = new Parse.File(name,dataFile); // saving logs "Uncaught Creating a Parse.File from a String is not yet supported."
var parseFile = new Parse.File(name,file); // saving logs 404 Not Found from POST to "http://api.parse.com/1/files"
var parseFile = new Parse.File(name,base64str); // saving logs "Uncaught Creating a Parse.File from a String is not yet supported."
parseFile.save().then(function (savedFile) {
stopPictures.push(savedFile);
alert("worked");
});
});
picReader.readAsDataURL(file);
}
} else {
$("#stop-img-container").hide();
}
}
这里有一些无关紧要的东西,但基本上它会收集用户选择的文件,一旦完成加载就会显示它们,然后将它们创建为Parse文件。我把它留下来表明至少有些东西正常工作,因为它可以在本地存储和预览用户选择的文件。
我已经提供了三种创建相同Parse文件的方法。但是,当我尝试以任何方式保存到Parse时,所有这些都失败了。
Parse的Javascript API文档说任何这些应该可以正常工作。但他们撒谎,或者我是个白痴。
任何人都知道为什么这似乎不起作用?似乎他们的API的一个非常关键的方面被彻底打破 - 我很难想象。
编辑:我也很肯定我正在解析(小写字母p)base64字符串,因为this site确认了适当的图像并且有效。
答案 0 :(得分:0)
我遇到了同样的问题 最后我找到了导致问题的原因 这是一个“文件名”。
我怀疑tuckerchapin示例中的文件名为null
var name = picFile.name;
我用React写了这个例子 这段代码工作正常。
class ImageUpload extends React.Component {
onChange(e) {
var file = e.target.files[0];
var parseFile = new Parse.File(file.name, file);
Parse.User.current().set("icon",parseFile);
Parse.User.current().save();
}
handleSubmit(e) {
e.preventDefault();
}
render() {
return (
<form onSubmit={this.handleSubmit}>
<input type="file" onChange={this.onChange.bind(this)} />
</form>
);
}
}