使用Jquery/Javascript上传和下载文件而无需后端

3

在不使用后端服务器的情况下,能否通过JavaScript函数下载和上传文件? 我需要通过JavaScript函数导出和导入XML文件。我希望创建一个“保存xml”按钮来保存文件,但我不知道是否可能。另外,我希望直接上传一个XML文件到JavaScript。 如果不可能的话,我会使用后端服务器作为代理。


您想将此文件保存在哪里?如果在服务器上,您需要编写一些服务器端代码。 - Abijeet Patro
向客户端传输,从浏览器到客户端机器,通常是文件下载(另存为...)或上传。 - Tobia
XML是用户使用JavaScript在网页上创建/编辑的内容,然后您希望他们下载所创建的文件吗?(因此全部基于客户端)还是预先制作好的XML文件,您只是想让他们下载?如果是后者,则XML需要位于托管您网页的同一服务器上。 - seanholden
这是一个基于客户端的 JavaScript 制作的 XML。我写了“XML”,但它也可以是由 JavaScript 生成的字符串。 - Tobia
2个回答

3
我认为你可以研究HTML5文件API。根据你的说法,所有文件都不应离开浏览器或Web应用程序的域。我相信这可能会导致一些问题,用户将被迫使用同一浏览器来访问文件。此外,HTML5标准还未被所有主要浏览器完全实现,这将是另一个风险。但是,如果你想走这条路,我提供了一些可能有帮助的资源。我建议托管文件,而不是我的项目,我不知道你的用例。

http://www.html5rocks.com/en/tutorials/file/dndfiles/

http://updates.html5rocks.com/2011/08/Saving-generated-files-on-the-client-side

http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download

http://eligrey.com/demos/FileSaver.js/


0

我不确定我是否理解得很好,但似乎您想将数据提交给远程客户端并接收数据。

接收和保存XML 由于它是XML,您可以使用ajax post/get*并从接收端解析您的xml数据,您还需要一个对象来保存您的XML数据以防需要保存。

var myXMLContainer = "";
$.ajax({
    type: "Get",
    datatype: "xml",
    url: "your url sending xml data",
    data: xmlData,
    success: function (result) {
        myXMLContainer = $.parseXML(result);
        $("#myHiddenDiv").text(myXMLContainer);
    }
});

保存您的数据。 由于JavaScript无法访问写入文件,否则这将是一个巨大的安全风险,至少可以说。您可以将您的数据设置为隐藏的div,并将其设置为btoa以保存您的数据。
function saveData(){
   btoa($("#myHiddenDiv").text());
}

我希望这足够清晰,可以理解……


不好意思,这需要从后端服务器发送或接收。我想要通过JavaScript命令运行“保存文件”。 - Tobia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接