Webservice上传的图像url
我正在使用java web服务(在tomcat上)。 我有下面的代码来处理图片上传:Webservice上传的图像url
public String uploadPicture( long xId,
int pictureIndex,
String imageData)
{
File imageFile = new File(new String("D:\\" + xId + "_" + pictureIndex));
try
{
FileOutputStream fos = new FileOutputStream(imageFile);
byte[] encodedImage = Base64.decode(imageData);
fos.write(encodedImage);
fos.close();
return imageFile.getPath();
}
catch(FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch(Base64DecodingException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch(IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
我指定的路径为d:\,因为它是在本地PC上。 但我需要更新它将部署它的服务器上的路径 - 然后应该将其更改为〜\ picDir?类似的东西?
WebService的网址:http://192.168.0.11:8080/XWebService/services/XWebService 将被更新,以域名,而不是192.168.0.11 应该用什么URL来获取图像? (例如,如果图片文件夹为:〜\ picDir)
- 如果目标服务器将运行Linux/Unix的,那么正确的路径应该是这样的/ usr /共享/ MYAPP。 '〜\'是完全错误的,我猜你的意思是'〜/',它会指向当前用户的主文件夹。应该避免这种情况,因为您可能将Web服务器作为具有不同主目录的不同用户运行。通常,在每个环境(开发人员机器,演示,活动服务器)上,您都应该有用于存储应用程序所需的配置和数据的位置。
- 您的图片的文件系统位置与照片所在的网址无关。它取决于Web Server(Tomcat,Jetty,JBoss等),它将运行你的应用程序和你的应用程序本身。例如,您可以配置Tomcat服务器将域www.myapp.com映射到/ var/lib/tomcat6/webapps/myapp /目录。将发布图像的Servlet可能会从1. =/usr/share/myapp/picDir中提到的配置目录中获取它们。如果可以通过/ pictures访问servlet?picId = 1,那么您可以在www.myapp.com/pictures?picId=1下找到它们。但是,如果您只是想将静态图像放入您的* .war文件以供浏览器访问,请将它们放在* .war文件的根目录中。
总结:
- 选择(并告诉我们)应用程序服务器
- 使用一些配置目录适用于所有环境和配置您的服务器能够看到它
- 配置您的服务器对于所需的域
您应该阅读更多关于* .war文件的上下文以及文件本身的组织方式。
谅解例如Tomcat的
的URL和背景假设:
- 在本地计算机所需的servlet位于:http://localhost:8080/myapp/utils/myservlet.html
- 您的应用打包为myapp.war
- 远程Tomcat具有IP 2.2.2.2并且正在端口8080上运行
当您将myapp.war部署到远程Tomcat到webapps目录(/ var/lib/tomcat6/webapps)时,它将被解压缩,您将能够看到您的servlet在http://2.2.2.2:8080/myapp/utils/myservlet.html之下。通过在Tomcat的服务器中配置您的应用程序。XML可以添加域名,并减少不必要的“myapp”部分称为上下文,有效地将URL保存为http://www.myapp.com/utils/myservlet.html。这是你在生产环境中想要的。这个主题在Tomcat的文档中有解释,请参考它。从Web应用程序
访问文件系统资源如果你想保存或从你的服务器的任何文件,请记住,客户端(网页浏览器)没有关于磁盘结构根本思想。浏览器使用它(在上传/下载方面)可以通过服务器这样的处理请求 - 响应通信模式:
- 上传 - 抓住从请求一些字节的内容,并保存为上服务器文件系统中的文件
- 下载 - 读服务器文件系统一些字节的内容和流它作为响应
正如你可以在这两种情况下,看到服务器文件系统为t的内部关注他服务于自己。你可以将它保存在你想要的任何地方您可以从任何位置读取字节。这就是为什么让MYAPP_CONF(在注释中提到)从一些预定义的目录存储和读取这些文件是很好的原因。
我正在使用tomcat服务器。图像由用户上传 - 不是静态的。 – Yoav 2012-01-04 13:44:20
好,我们通常做的是创建一个指向我们配置目录的环境变量,比如说:MYAPP_CONF =/usr/share/tomcat6/myapp。在开发时,将PC上的MYAPP_CONF指向“D:\”。将picDir放在该目录下。这样你将有相同的开发和生产配置。 请记住确保Tomcat看到该变量。 当你需要从servlet访问一些文件时,使用System.getProperty(“MYAPP_CONF”),瞧。 – 2012-01-04 13:57:32
非常感谢....................... :)但如果我想D/L图像.....我应该从哪个网址获得它。我在你的解释中错过了这部分 – Yoav 2012-01-04 14:03:50