首先说一下几个地方:
1.上传使用ss.upload("domin域名","源地址","目标地址,也就是storage的地址");假设要上传到storage某一个详细的文件夹下目标地址写为"upload/"+filename;文件就上传到了upload文件夹下。
String realPath = ss.getUrl("域名", “上面的目标路径”); 就能够得到这个全网路径
3.使用commons-fileupload上传组件时,先把文件写到一个暂时路径里,然后再写回storage就好了。
以下是java代码:
private void userSave(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
FileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);
List items=null;
try {
items=upload.parseRequest(request);
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Iterator itr=items.iterator();
HttpSession session=request.getSession();
User user=(User)session.getAttribute("currentUser");
//上传到Storage之后的真是路径
String realPath=user.getImageName();
String imageName=user.getImageName();
boolean imageChange=false;
while(itr.hasNext()){
FileItem item=(FileItem)itr.next();
if(!item.isFormField()){
try{
imageName=DateUtil.getCurrentDateStr();
//带后缀的文件名称
imageName=imageName+"."+item.getName().split("\\.")[1];
user.setImageName(imageName);
//String filePath=PropertiesUtil.getValue("imagePath")+imageName+"."+item.getName().split("\\.")[1];
String folder=PropertiesUtil.getValue("imagePath");
String filePath=session.getServletContext().getRealPath(folder)+"/"+imageName;
//前面的部分仅仅须要按正常的上传来写就能够了 filePath仅仅是一个暂时文件 item.write(new File(filePath));
// 上传完成后 使用SaeStorage往storage里面写
SaeStorage ss = new SaeStorage();
// 使用upload方法上传到域domain下,此处本人的是onway
ss.upload("onway", filePath, "upload/"+imageName);
// 获取上传后的图片路径
realPath = ss.getUrl("onway", "upload/"+imageName);
// System.out.println(realPath);
}catch(Exception e){
e.printStackTrace();
}
}
}