ftp图片服务器搭建!ftp上传到图片服务器,通过http协议读取图片

来源:互联网 发布:软件项目 文档 编辑:程序博客网 时间:2024/05/16 12:23

现在在搞图片服务器,需求是

1.用户上传的图片不能直接上传到应用服务器,而且要上传到另外一太专门的服务器上去,目的是为了实现负载和共享,

2.从图片服务器上读取图片


解决思路:

思路一,用ftp上传,用ftp下载

思路二,用ftp上传,用http下载[图片服务器装一个web容器。如tomcat]

考虑到下载时如果用ftp,因为存在鉴权操作,而且每次都要建立新链接并断开谅解,这样效率很低,所以决定用思路二:


开始动手

远程操作数据,网上好多人说有两种方式:1,用sun提供的ftpClient   2.用apache提供的开源组件

我这里选择了sun的jdk自带的ftpClient.

遇到的问题:1,刚开始我用的jdk7,结果发现sun的类识别调用报错,经查是因为jdk7对net包下的ftpClient做个修改,所以有的api不能用,

解决办法:果断换回jdk6编译。问题解决

2.上传完成后发现中文的文件名都变成了乱码。经查是因为sun默认进行了编码is08859-1; 

解决办法:自己写个类 MyFtpClient  继承FtpClient即可,只有个方法用来设置转码,一般设置为GBk即可。代码下面附


3.中文总算顺利传上去,本地用servlet调用http://来访问传上去的图片,结果发现只要文件名有中文的文件,无论是用浏览器地址栏访问还是在servlete后台

String urlString = "http://10.10.110.112:8080/fdc-report-MySQL"+"/"+path+"/"+temp2;
    URL url = new URL(urlString); 
    URLConnection conn = url.openConnection();  

InputStream bis = conn.getInputStream();

都访问不了:

解决办法“:tomcat默认不知道中文访问,所以对tomcat进行设置,让中文路径也可以访问:

  在Tomcat安装目录下找到server.xml文件,找到 

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
        在里面加入URIEncoding="utf-8" 这个属性,保存,然后重启tomcat即可。 

4.上传的文件名字中有空格,tomcat也访问不了:原因是:路径中空格要进行转换。空格被转码成'+'了,而在tomcat服务器中,空格是'%20',所以会导致无法访问到该路径

解决办法: 

String filename = "QQ截      图20130802091756.png";

String temp1=URLEncoder.encode(filename, "UTF-8");
    String temp2=temp1.replaceAll("\\+", "%20");   
    String urlString = "http://10.10.110.112:8080/fdc-report-mysql"+"/"+path+"/"+temp2;
    URL url = new URL(urlString); 

到此问题基本解决  .

遇到问题就要内心解决,一定可以搞定。加油!!!



下面给大家附上代码:











原创粉丝点击