Javascript XUL:直接上传到S3,但不使用文件输入元素
我正在开发一个Firefox插件,它需要将图像从本地文件系统直接上传到S3 我可以在AWS中找到的示例,等等。解释如何使用用于图像传输的标准文件输入控件(与其他AWS特定的请求签名等一起,我已经很好地工作了)对网页执行此操作 但是,我找不到任何关于如何在不使用文件输入的情况下上载文件的信息,我知道文件的本地绝对路径(加载项在尝试上载到S3之前会将文件写入) 经过几个小时的尝试,找到了“正确”的方法,我想到了如下伪造文件输入:Javascript XUL:直接上传到S3,但不使用文件输入元素,javascript,amazon-web-services,amazon-s3,firefox-addon,xul,Javascript,Amazon Web Services,Amazon S3,Firefox Addon,Xul,我正在开发一个Firefox插件,它需要将图像从本地文件系统直接上传到S3 我可以在AWS中找到的示例,等等。解释如何使用用于图像传输的标准文件输入控件(与其他AWS特定的请求签名等一起,我已经很好地工作了)对网页执行此操作 但是,我找不到任何关于如何在不使用文件输入的情况下上载文件的信息,我知道文件的本地绝对路径(加载项在尝试上载到S3之前会将文件写入) 经过几个小时的尝试,找到了“正确”的方法,我想到了如下伪造文件输入: var fileInput = document.createE
var fileInput = document.createElementNS("http://www.w3.org/1999/xhtml","input");
fileInput.setAttribute('type', 'file');
fileInput['files'] = [{
mozFullPath: file.path,
name: file.leafName,
size: file.fileSize,
type: 'image/gif' // testing only with gifs
}];
然后fd.append(“file”,fileInput.files[0])代码>其中fd是我的FormData
对象。然后通过AJAX将其发布到s3
这会将文件上载到S3。但是,在浏览器中打开文件时,我得到的是文本“undefined”
,而不是图像
然后我尝试了fd.append(“file”,fileInput.files)代码>-这一次,浏览器返回的内容而不是图像是文本“[对象文件列表]”
我被难住了!我知道这与试图伪造文件输入有关。我相信应该有一种更干净、更正确的方法来使用兴奋剂
有人能告诉我如何解决这个问题吗?提前感谢。从chrome
code(又名特权代码),您只需使用以下路径调用文件构造函数即可构造DOM文件对象:
var file = File("path/to/some/file");
fd.append("file", file);
有关更多信息,请参阅:。谢谢您的回答。我也试过了,因为这似乎是正确的方法(忘了在我的问题中包括它),但它不起作用。S3给了我错误“MalformedPOSTRequest”
,只是为了确保:当使用文件输入而不是新文件()时,完全相同的代码可以工作。
?请求在线路上有什么不同(控制台带有请求日志记录和/或网络面板,适用于懒惰者)。通过打开关于:newtab,顺便说一句,您将获得一个免费的chrome
特权页面,包括所有开发工具和草稿行。。。可能比摆弄实际的附加代码更容易。;)DOM文件方法确实有效。这个错误是另一个错误(几分钟前刚刚解决了!)。我试图在将文件写入磁盘后很快将其上载(使用nsIWebBrowserPersist.saveUri
)。我在上传之前引入了延迟,以确保文件被saveUri的编写器关闭(因为我在nsIWebBrowserPersist
中找不到关闭方法)。是的,scratchpad确实是chrome环境的救命稻草。指针的Tks。