我可以将文件从桌面拖到Firefox 3.5中的放置区域并启动上传吗?

时间:2009-07-01 08:26:05

标签: firefox file-upload drag-and-drop firefox-3

我在放置区域设置了一个ondrop事件,当我将图像从桌面拖到放置区域时,它会收到一个事件。

但是,根据Recommended_Drag_Types文档:

https://developer.mozilla.org/en/DragDrop/Recommended_Drag_Types

  

使用带有nsIFile对象的数据值的application / x-moz-file类型拖动本地文件。非特权网页无法检索或修改此类型的数据。

这是有道理的,但是如何提示用户升级权限以访问文件数据并通过XMLHttpRequest发送?

如果我在执行此代码时尝试不升级权限:

event.dataTransfer.mozSetDataAt("application/x-moz-file", file, 0);

Javascript返回此错误:

Permission denied for domain.com to create wrapper for object of class UnnamedClass

我能找到的唯一一篇文章是2005年的文章,但我不知道这些指示是否仍然适用于Firefox 3,它建议这样做:

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

似乎不起作用。

2 个答案:

答案 0 :(得分:0)

如果您尚未升级到3.5,则可以使用dragdropupload扩展名。

答案 1 :(得分:0)

我发现如果不是全局升级权限,那么:

    netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
    ...
    function doDrop(event) {
       ...
       var file = event.dataTransfer.mozGetDataAt("application/x-moz-file", 0);
       ...
    }

我升级了函数体内的权限:

    ...
    function doDrop(event) {

       netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
       ...
       var file = event.dataTransfer.mozGetDataAt("application/x-moz-file", 0);
       ...
    }

我摆脱了您描述的错误,并获得了我正在寻找的nsIFile实例的访问权限。