javascript - BeforeUpload 事件中的 $.ajax - Plupload

标签 javascript jquery ajax amazon-s3 plupload

此应用程序是一种图像上传工具,可使用 Plupload 将图像直接从客户端浏览器上传到 Amazon S3。到目前为止,除此问题外一切正常。

我有这段代码用于BeforeUpload 事件。

init: {
    BeforeUpload: function (up, file) {
        $.ajax({
            url: '/ServerTime.ashx',
            dataType: 'text',
            data: { format: "yyyy-MM-dd_HH.mm.ss.fffffff" },
            type: 'POST',
            cache: false
        }).done(function (data) {
            console.log("Before setting ImageName: " + data);
            imageName = data + ".JPG";
            console.log("After setting ImageName: " + imageName);
            up.settings.multipart_params = {
                'key': key,
                'Filename': imageName,
                'acl': 'public-read',
                'success_action_status': '201',
                'AWSAccessKeyId': accessKey,
                'policy': policyDocument,
                'signature': policySignature
            };
        });
    }
}

但是,我在尝试上传文件时遇到了这个错误:

HTTP Error. Upload URL might be wrong or doesn't exist.

在控制台上,它正在打印如下预期结果:

Before setting ImageName: 2014-04-04_13.33.45.1155072

After setting ImageName: 2014-04-04_13.33.45.1155072.JPG

我想可能是因为我正在使用 AJAX 从服务器获取时间,所以出了点问题。另一方面,尝试使用以下代码没有任何问题。

init: {
    BeforeUpload: function (up, file) {
        up.settings.multipart_params = {
            'key': "This_Is_Folder_Name/This_Is_File_Name.JPG",
            'Filename': "This_Is_File_Name.JPG",
            'acl': 'public-read',
            'success_action_status': '201',
            'AWSAccessKeyId': accessKey,
            'policy': policyDocument,
            'signature': policySignature
        };
    }
}

请注意,这次我为 Filenamekey 使用静态名称,而且也没有 AJAX

我真的需要帮助解决这个问题。请建议我。使用 AJAX 获取服务器时间并将其用作文件名时我做错了什么? 谢谢。

最佳答案

您可以通过执行以下操作来覆盖他们的一些代码:

init: {
    BeforeUpload: function (up, file) {
        $.ajax({
            url: '/ServerTime.ashx',
            dataType: 'text',
            data: { format: "yyyy-MM-dd_HH.mm.ss.fffffff" },
            type: 'POST',
            cache: false
        }).done(function (data) {
            console.log("Before setting ImageName: " + data);
            imageName = data + ".JPG";
            console.log("After setting ImageName: " + imageName);
            up.settings.multipart_params = {
                'key': key,
                'Filename': imageName,
                'acl': 'public-read',
                'success_action_status': '201',
                'AWSAccessKeyId': accessKey,
                'policy': policyDocument,
                'signature': policySignature
            };
            file.status = plupload.UPLOADING;
            up.trigger("UploadFile", file);
        });
        return false;
    }
}

这会取消他们的触发,因此您必须自己触发。请注意,我还没有对此进行测试。

编辑:我不确定 upfile 是否超出范围......

关于javascript - BeforeUpload 事件中的 $.ajax - Plupload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22864949/

相关文章:

javascript - 确定一个词是否是保留的 Javascript 标识符

javascript - 在 Angular 的 innerHTML 中使用字符串插值

javascript - 从选择元素返回 SelectedIndex

javascript - 完成后获取 jQuery AJAX 请求的参数

ajax - Grails动态下拉菜单使用remoteFunction不起作用

javascript - Angular 形 Material - 从底部开始的侧导航?

javascript - 检查 contenteditable div 是否为空

javascript - 获取垃圾邮件注册和联系表单提交

javascript - $.getJSON 和 $.ajax 无法返回 JSON 对象

javascript - 如何在客户端javascript中读取本地csv文件?