1

我正在尝试使用 Trigger.io 将照片上传到 Appcelerator 云服务 (ACS) 存储。

我无法弄清楚用于文件对象的正确语法。我收到一个错误“错误:语法错误,无法识别的表达式:#[object Object]”

这是我的相关代码:

$("#photograph-record").on("click", function(){
    forge.file.getImage({source:"camera", width: 280, height: 280},function(file) {

    var data = {
          photo: file  //the ID of file input control
        };

    sdk.sendRequest('photos/create.json', 'POST', data, callback);
    });
});

这是 ACS Photo 类的文档 - http://cloud.appcelerator.com/docs/api/v1/photos/create

必需参数 - photo:附加的二进制文件

因为它需要是二进制文件,所以我尝试了“照片:forge.file.string(file)”(http://docs.trigger.io/en/v1.4/modules/file.html#modules-file),但是在 Appcelerator 端出现错误“照片上传所需的照片参数”。

我使用 forge.file.url 将图像传递到我的应用程序页面视图中没有问题,所以我知道文件对象没有问题,它只是找出正确的语法将其作为二进制文件传递给 sdk.sendRequest 调用。

关于我需要传递数据变量以使其正常工作的任何想法?

4

1 回答 1

1

Appcelerator 文档在这里非常好 - 看起来他们期待一个名为 POST 的参数photo,其中包含二进制图像数据。

使用我们的请求模块来做到这一点:

$("#photograph-record").on("click", function(){
    forge.file.getImage({source:"camera", width: 280, height: 280},function(file) {
        file.name = 'photo'; // the magic    
        forge.request.ajax({
            url: 'https://api.cloud.appcelerator.com/v1/photos/create.json',
            files: [file],
            success: function () { ... },
            error: function () { ... }
        });
    });
});

我在这里看不到使用他们的 JS 库的方法,因为他们希望您传递 HTML 表单元素的 id 以从中获取数据,但我们正在直接与相机或画廊交互......

于 2013-04-15T10:02:50.543 回答