javascript - 使用 javascript 将文件上传到 parse.com

标签 javascript file-upload parse-platform

我正在尝试上传一组文件以使用 JavaScript 进行解析,代码如下:

html:

<fieldset>
    <input type="file" name="fileselect" id="fileselect" multiple></input>
    <input id="uploadbutton" type="button" value="Upload"> </input>
</fieldset>

JS:

$('#uploadbutton').click(function () {
    var fileUploadControl = $("#fileselect")[0];
    if (fileUploadControl.files.length > 0) {
        var file = fileUploadControl.files[0];
        var name = "style.css";
        var parseFile = new Parse.File(name, file);
        var filesArray = [parseFile];
    }
    parseFile.save().then(function() {
        // The file has been saved to Parse.
    }, function(error) {
        // The file either could not be read, or could not be saved to Parse.
    });
    var newStore = new Parse.Object("FileStore");
    newStore.set("files", filesArray);
    newStore.save();
});

我正在上传到一个名为 FileStore 的类,其中键"file"当前设置为一个数组,并且我想保存一个文件数组。这是上传多个文件进行解析的最佳方法吗?我的代码现在不起作用。我的目标是让多个文件与我的类中的每个对象关联。

最佳答案

小心异步代码。目前,您的代码存在竞争条件,很可能会失败,因为您在 parseFile.save() 完成之前调用了 newStore.save()

处理 newStore 的这 3 行应该位于 parseFile.save() 的成功处理程序内,例如:

parseFile.save().then(function() {
    // The file has been saved to Parse.
    var newStore = new Parse.Object("FileStore");
    newStore.set("files", filesArray);
    newStore.save();
}, function(error) {
    // The file either could not be read, or could not be saved to Parse.
});

当您要保存多个文件时,您需要等待所有文件完成才能继续下一步。您可以将您的 promise 链接在一起以运行 Series或在 Parallel .

对于你想要的,并行可以很好地工作:

var fileSavePromises = [];

// assuming some code that creates each file has stored the Parse.File objects in an
// array called "filesToSave" but not yet called save
_.each(filesToSave, function(file) {
    fileSavePromises.push(file.save());
});

Parse.Promise.when(fileSavePromises).then(function() {
    // all files have saved now, do other stuff here
    var newStore = new Parse.Object("FileStore");
    newStore.set("files", filesToSave);
    newStore.save();
});

关于javascript - 使用 javascript 将文件上传到 parse.com,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27889064/

相关文章:

javascript - 如何让 jQuery 在上传之前选择文件时过滤文件类型?

parse-platform - 将 Parse Object 传入云代码函数

android - 向 parse.com 安装表中的 channel 添加值时出错?

javascript - 鼠标悬停时获取对象的标签、id、类

javascript - 输入文件多个: show all the file names at the same time using javascript

php - 当用户上传文件超过限制时,PHP 会做什么?

reactjs - 如何使用strapi上传文件并获取URL?

android - Android 的 ParseQueryAdapter 不调用其 onLoaded 方法

javascript - 在 jquery onscroll 中添加和删除类

javascript - 如何在结帐时传递 stripe 上的现有订阅详细信息