将文件保存在localhost上

时间:2014-02-14 05:18:27

标签: javascript html jsp tomcat servlets

我在html中创建了一个编辑器,编辑器文本现在保存(或下载)在我的浏览器下载文件夹中,因为页面在tomcat上我希望它将文件(编辑器文本)保存在服务器WEB-INF中夹。在我的搜索中,我发现我只能通过JSP执行此操作,如何在JSP中编写路径以便将下载保存在WEB-INF中?我可以在下面的html页面代码中包含它吗?如果是这样,代码怎么样?

<!DOCTYPE html>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<title>ACE in Action</title>
<style type="text/css" media="screen">
    #editor { 
        position: absolute;
        top: 0;
        right: 0;
        bottom: 7%;
        left: 0;
    }
</style>
</head>
<body>

<div id="editor">
Blah blah blah
</div>


<script src="ace-builds-master/src-noconflict/ace.js" type="text/javascript" charset="utf-8">
</script>
<script>
var editor = ace.edit("editor");
editor.setTheme("ace/theme/cobalt");
editor.getSession().setMode("ace/mode/gc");
</script>

<button type= "button" style="position: absolute; left: 10%; bottom: 2%;" id="execute" onclick="saveTextAsFile()">Click to execute</button>

<script type='text/javascript'> 
function saveTextAsFile()
{
  var script = ace.edit("editor");
  var textToWrite = script.getValue() 
  var textFileAsBlob = new Blob([textToWrite], {type:'.c'});
  var fileNameToSaveAs = "my.c";

 var downloadLink = document.createElement("a");
 downloadLink.download = fileNameToSaveAs;
  if (window.webkitURL != null)
  {
    downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
  }
  else
  {
    downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
    downloadLink.style.display = "none";
    document.body.appendChild(downloadLink);
  }

}
</script>


</body>
</html>

1 个答案:

答案 0 :(得分:1)

您当前的html / javascript编辑器在客户端(即Web浏览器)上运行。 JSP在服务器端运行。目前,您在本地运行服务器。看起来您正在动态创建指向文档的链接:document.body.appendChild(downloadLink);当用户单击链接时,Web浏览器将调用可以访问本地文件系统的“文件对话框”。 “文件对话框”将无法访问服务器文件系统(即,如果将部署从本地主机移动到远程服务器)。

因此,如果您说永远不会运行远程服务器,那么您只需使用Web浏览器的文件对话框导航到WEB-INF位置即可。我假设你正在尝试更多的东西?

如果您想要将“textFileAsBlob”发送到服务器,则可以使用javascript执行此操作。您可以扩展您的javascript代码以执行到服务器的ajax请求(例如HTTP POST)。然后,服务器需要检查请求,然后将文件保存到服务器的文件系统(假设这就是您要求的)。如果这是正确的,您可以使用众多servlet文件上载库之一。例如:https://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi

所以,如果我是对的。您希望将数据从客户端传输到服务器。您需要使用对服务器的ajax调用替换“链接创建”。向服务器添加“文件上载”处理。

希望有所帮助:)祝你好运。