无法获取在主机上上传的路径。 Jsp
Can't get path to upload on host. Jsp
请帮助我,我整整一周都试图在 google 上找到答案,但我没有运气。对我一点用处都没有,这是我的问题,我真的很感谢你的帮助。
我想在我的主机上上传一张图片,我使用了这样的代码,它在本地主机上运行良好,但在我的真实主机上却不行。这是我的代码:
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
}
else {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
params.put(item.getFieldName(), item.getString());
} else {
try {
String itemName = item.getName();
filename = rdhash.randomHash() + itemName.substring(
itemName.lastIndexOf("\") + 1);
String realPath = getServletContext().getRealPath("/")
+ "banner\" + filename;
out.println(realPath);
File savedFile = new File(realPath);
item.write(savedFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
如我所说,它无法在我的真实主机上运行。我试图找出它不起作用的原因,但我发现它无法获取上传路径,它可能无法获取上传路径,因为 out.println() 代码显示如下:
null\banner\[my file name].jpg
但是当我在我的本地主机上尝试时,它显示了我的项目的完整路径,如:
C:\[myproject folder]\banner\[my file name].jpg
我不知道为什么它无法获取我主机上的真实路径。请帮助我,我现在正在思考。我的托管服务器是 Tomcat 7 bros.
----------------------------更新---------------- ------
这是我的 server.xml 内容的一部分。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access" suffix=".log" rotatable="false"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="[myhost].com" appBase="/Homedata/[hostname]/public_html" unpackWARs="true" deployXML="false">
<Alias>www.[hostname].com</Alias>
<Context path="" reloadable="true" docBase="/Homedata/[hostname]/public_html" debug="1"/>
<Context path="/manager" debug="0" privileged="true"
docBase="/usr/local/easy/share/easy-tomcat7/webapps/manager">
</Context>
</Host>
将 "unpackWARs" 属性添加到 Tomcats "server.xml" 中的主机配置并将其设置为 true。可能看起来像这样:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
更好:不要将上传的文件放入您的应用程序目录。重新部署应用程序后,内容将丢失。在服务器的任意位置创建一个外部目录,并将完整路径添加到您的应用程序配置中。
请帮助我,我整整一周都试图在 google 上找到答案,但我没有运气。对我一点用处都没有,这是我的问题,我真的很感谢你的帮助。
我想在我的主机上上传一张图片,我使用了这样的代码,它在本地主机上运行良好,但在我的真实主机上却不行。这是我的代码:
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (!isMultipart) {
}
else {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
params.put(item.getFieldName(), item.getString());
} else {
try {
String itemName = item.getName();
filename = rdhash.randomHash() + itemName.substring(
itemName.lastIndexOf("\") + 1);
String realPath = getServletContext().getRealPath("/")
+ "banner\" + filename;
out.println(realPath);
File savedFile = new File(realPath);
item.write(savedFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
如我所说,它无法在我的真实主机上运行。我试图找出它不起作用的原因,但我发现它无法获取上传路径,它可能无法获取上传路径,因为 out.println() 代码显示如下:
null\banner\[my file name].jpg
但是当我在我的本地主机上尝试时,它显示了我的项目的完整路径,如:
C:\[myproject folder]\banner\[my file name].jpg
我不知道为什么它无法获取我主机上的真实路径。请帮助我,我现在正在思考。我的托管服务器是 Tomcat 7 bros.
----------------------------更新---------------- ------ 这是我的 server.xml 内容的一部分。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access" suffix=".log" rotatable="false"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="[myhost].com" appBase="/Homedata/[hostname]/public_html" unpackWARs="true" deployXML="false">
<Alias>www.[hostname].com</Alias>
<Context path="" reloadable="true" docBase="/Homedata/[hostname]/public_html" debug="1"/>
<Context path="/manager" debug="0" privileged="true"
docBase="/usr/local/easy/share/easy-tomcat7/webapps/manager">
</Context>
</Host>
将 "unpackWARs" 属性添加到 Tomcats "server.xml" 中的主机配置并将其设置为 true。可能看起来像这样:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
更好:不要将上传的文件放入您的应用程序目录。重新部署应用程序后,内容将丢失。在服务器的任意位置创建一个外部目录,并将完整路径添加到您的应用程序配置中。