javascript - 改变顺序

标签 javascript dojox.grid dojo

我正在尝试使用 dojo.io.send 将文件上传到我的亚马逊帐户。但是,它没有成功。

这是我在运行 Firebug 时看到的错误。

<Error>
<Code>InvalidArgument</Code>
<Message>Bucket POST must contain a field named 'key'. If it is specified,
please check the order of the fields.</Message>
<ArgumentValue></ArgumentValue>
<ArgumentName>key</ArgumentName>

我找到了原因,显然“Key”字段在 "file"字段,因为它忽略下面的字段并抛出 错误。

为了纠正这个问题,我需要有 dojo.io.send() 来发送 参数列表如下:-

key uploads/${filename}
AWSAccessKeyId
policy
signature
Content-Type plain/text
file

我通过玩下面的代码来试试运气,但它总是把文件 顶部的字段。

如果有人可以帮助我更改顺序,我将不胜感激。

代码片段:-

var jsonpArgs =
      {
            url: "https://s3.amazonaws.com/<Bucketname>",
            form : dojo.byId("Myform"),  
            //MyForm has an attribute
           //as file which takes the file name from the user to upload.

                     handleAs: "json",
                     content:
                     {
                            "key":"*******",
                            "AWSAccessKeyId":"****",
                            "policy" :"***********",
                            "signature":"*******",
                            "Content-Type":"plain/text"

                      },
                      error: function(error)
                      {

                      },


       };

 dojo.io.iframe.send(jsonpArgs);

      },

感谢,

最佳答案

原因是 Dojo 只是迭代 JSON 对象中的所有属性并从中生成 POST 请求正文。由于迭代顺序未确定,您不能保证 key 属性始终是第一个。

解决方案是自己生成 POST 正文。您可以使用以下方式获取 POST 正文字符串:

"key=" + encodeURIComponent(key) + "&" + dojo.objectToQuery({AWSAccessKeyId : "", policy :""})

通过这样做,key 始终是帖子正文中的第一个。

发送请求时,不要使用content 属性,而是使用rawBody。如果您使用的是旧版本的 Dojo,也许您可​​以使用 dojo.rawXhrPost 并在请求中使用 postData 属性。

关于javascript - 改变顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6943138/

相关文章:

javascript - Dojo:以编程方式设置复选框标签

javascript - 有没有办法读取dojo Objectstore并将其转换为JS数组对象

javascript - 如何解析包含计算的字符串并执行它

javascript setMonth() - 设置从日期 1 到日期 2 的月份。为什么date1也要变?

php - 关于 PHP 和 Javascript 中时间函数的问题,特别是 Javascript 的 getTime 函数

javascript - Dojo 1.8 使用提供的 JsonRest 的对象和子对象填充 EnhancedGrid

javascript - 使用 AndOrReadStore 的 Dojo DataGrid 过滤器——我做错了什么?

java - 文件上传和进度条

javascript - 如何从 dijit/form/select 中删除所有选项?

javascript - 正则表达式 : substring not followed by character