这是jsp文件上传表单
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>File Uploading form</title>
</head>
<body>
<form action="./read.do" method="post">
Select the file to read: <input type="file" id="myFile" size="50">
<br />
path is: <input type="text" name="path" />
<button type="button" onclick="myFunction()">Copy path</button>
<input type="submit" value="Submit">
<p id="demo"></p>
<script>
function myFunction() {
var x = document.getElementById("myFile").value;
document.getElementsByTagName("INPUT")[3].setAttribute("value",x);
}
</script>
</form>
</body>
</html>
这里我没有将文件上传到我的服务器我只是采用文件的路径并使用servlet中的以下代码读取文件
String path = req.getParameter("path");
FileInputStream fis = null;
File excel = new File(path);
fis = new FileInputStream(excel);
当我在服务器存在的同一台机器上运行时,这工作正常。但是当我尝试从其他机器访问时,代码正在我的机器中搜索路径但不在客户端机器上搜索如何过来。 我已经看到了一些其他的方式,如使用multipart,但文件正在加载到服务器,但为了我的要求,我不应该直接将文件上传到我的服务器,我必须通过采取文件路径在客户端机器上读取完整的文件。请告诉我一些想法来实现这个目标
答案 0 :(得分:2)
您可以尝试JavaScript File Reader API,使用JS读取客户端的文件内容。 file API
例如:
var file = document.getElementById("fileForUpload").files[0];
if (file) {
var reader = new FileReader();
reader.readAsText(file, "UTF-8");
reader.onload = function (evt) {
document.getElementById("fileContents").innerHTML = evt.target.result;
}
reader.onerror = function (evt) {
document.getElementById("fileContents").innerHTML = "error reading file";
}
}
&#13;
或者您也可以使用HTML5的文件阅读器HTML5 FileReader
答案 1 :(得分:1)
文件上传是multi-part request。 request.getParameter()返回客户端计算机上的文件路径。而不是那样,您需要使用request.getPart() 方法或apache-fileupload之类的库来检索远程文件的输入流。