图片服务器选择
1.1 第一种选择 tomcat等servlet容器作为图片服务器,
性价比一般,不推荐使用
**使用到的jar 文件有三个
1.commons-io-1.3.2.jar
2.jersey-client-1.18.1.jar
3.jerset-core-1.18.1.jar**
public void upLoadpic(@RequestParam(required=false) MultipartFile pic,HttpServletResponse response)
{
System.out.println(pic.getOriginalFilename()); //打印文件的名字
String ext=FilenameUtils.getExtension(pic.getOriginalFilename()); //获取文件的扩展名
System.out.println("文件的扩展名是ext="+ext);
String url="http://localhost:8088/Web-Image/";
DateFormat df=new SimpleDateFormat("yyyyMMddHHmmssSSS");
String format=df.format(new Date());
Random rd=new Random();
for(int i=0;i<3;i++)
{
format+=rd.nextInt(10);
}
//实例化服务器
Client client=new Client();
String path="upload/"+format+"."+ext;
System.out.println("上传图片路径是:"+url+path);
WebResource webResource= client.resource(url+path);
try {
//发送到服务器上面 这里是通过put发送,我们经常使用的是get 或者是post发送
// pic.getBytes() //转化为二进制
webResource.put(String.class,pic.getBytes()); //开始进行上传
}
catch (Exception e) {
e.printStackTrace();
}
JSONObject js=new JSONObject();
js.put("url", url+path);
js.put("path",path);
try {
// response.getWriter().write(js.toString());
ResponseUtils.renderJson(response, js.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//处理上传异常的情况
@ExceptionHandler(Exception.class)
public void error(Exception ex,HttpServletRequest request,HttpServletResponse response)
{ JSONObject js=new JSONObject();
long maxSize=((MaxUploadSizeExceededException)ex).getMaxUploadSize();
js.put("error", "文件太长,不能超过"+maxSize);
response.setCharacterEncoding("utf-8");
ResponseUtils.renderJson(response, js.toString());
}
配置SpringMVC上传图片
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<!-- 上传大小限制是1M 单位是byte -->
<property name="maxUploadSize" value="1048576" />
<property name="resolveLazily" value="true"/>
</bean>
2. 选择ftp服务器作为 静态资源服务器 #
2.1这种方法最为推荐使用,极大的节省资源,性价比相当的高
//创建一个FtpClient 对象,
FTPClient client =new FTPClient();
//创建ftp链接
client.connect("192.168.9.132",21); //默认的端口号是21
//登陆ftp服务器,使用用户名和密码
client.login("ftpuser", "ftpuser");
FileInputStream inputStream=new FileInputStream("G:\\12\\图片\\6.jpg");
client.changeWorkingDirectory("/home/ftpuser/");
client.setFileType(FTP.BINARY_FILE_TYPE);//设置上传文件的格式是二进制的形式
//上传文件
client.storeFile("helldfgfdgfdgdfgso.jpg", inputStream);
//关闭连接
client.logout();
System.out.println("上传成功");