//UploadFileServiceBean 提供一个查找到要删除文件列表的函数
package com.itcast.service.product.impl;
import java.util.LinkedHashMap;
import java.util.List;
import javax.persistence.Query;
import org.springframework.stereotype.Service;
import com.itcast.service.base.DaoSupport;
import com.itcast.service.product.UploadFileService;
import com.itcast.util.QueryResult;
@Service
public class UploadFileServiceBean extends DaoSupport implements
UploadFileService {
public List<String> getSelectedFilePath(Integer[] ids) {
StringBuffer jpql = new StringBuffer();
for(int i =0;i<ids.length;i++){
//jpql is:?1,?2,?3,?4,
jpql.append("?").append(i+1).append(",");
}
jpql.deleteCharAt(jpql.length()-1);
String sql = "select o.filePath from UploadFile o where o.id in("+jpql.toString()+")";
Query query = em.createQuery(sql);
for(int i = 0;i<ids.length;i++){
query.setParameter((i+1), ids[i]);
}
System.out.println("-------------------in UploadFileServiceBean :jpql.toString() is:" + jpql.toString());
System.out.println("-------------------in UploadFileServiceBean :sql is:" + sql);
return query.getResultList();
}
}
//UploadFileManageAction 实现了添加上传文件和删除上传文件的方法
package com.itcast.web.action.product;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.springframework.stereotype.Controller;
import com.itcast.bean.product.UploadFile;
import com.itcast.service.product.UploadFileService;
import com.itcast.util.SetUrl;
import com.itcast.web.formbean.product.UploadFileForm;
@Controller("/control/uploadfile/manage")
public class UploadFileManageAction extends DispatchAction {
@Resource(name="uploadFileServiceBean")
private UploadFileService uploadFileService;
public ActionForward addUI(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
return mapping.findForward("addUI");
}
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UploadFileForm formBean = (UploadFileForm)form;
UploadFile upoadfile = new UploadFile();
if(!formBean.validateUploadFile(formBean.getUploadfile())){
request.setAttribute("message", "为了保证服务器安全,只允许上传只允许上传图片/flash动画/word文件/exe文件/pdf文件/TxT文件/xls文件/ppt文件");
request.setAttribute("urladdress", SetUrl.getUrlAddress("control.uploadfile.list"));
return mapping.findForward("message");
}
if(formBean.getUploadfile()!= null && formBean.getUploadfile().getFileSize()>0){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/HH");
String uploadfilepathdir = "/uploadfile/" + sdf.format(new Date());//构建图片保存的目录
//得到图片保存目录的真实路径
String uploadfilesavedir = request.getSession().getServletContext().getRealPath(uploadfilepathdir);
// System.out.println("-----------------------in BrandManageAction logorealpathdir is:" + logorealpathdir);
// System.out.println("-----------------------in BrandManageAction logopathdir is:" + logopathdir);
//创建文件目录
File uploadsavedir = new File(uploadfilesavedir);
//如果目录不存在就创建
if(!uploadsavedir.exists()){
uploadsavedir.mkdirs();
}
//得到上传文件的名字
String fileName = formBean.getUploadfile().getFileName();
//得到上传文件的扩展名,如.gif,.jpg
String ext = fileName.substring(fileName.lastIndexOf("."));
//构建文件保存时候的文件名
String uploadfileName = UUID.randomUUID().toString() + ext;
try {
FileOutputStream fops = new FileOutputStream(new File(
uploadsavedir, uploadfileName));
//将上传的文件信息保存到相应的文件目录里
fops.write(formBean.getUploadfile().getFileData());
fops.close();
} catch (Exception e) {
// TODO: handle exception
}
String uploadfilepath = "/baba1.1" +uploadfilepathdir + "/" + uploadfileName;
upoadfile.setFilePath(uploadfilepath);
}
uploadFileService.save(upoadfile);
request.setAttribute("message", "上传文件成功");
request.setAttribute("urladdress", SetUrl.getUrlAddress("control.uploadfile.list"));
return mapping.findForward("message");
}
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UploadFileForm formBean = (UploadFileForm)form;
Integer[] ids = formBean.getDelIds();
/**
* 删除服务器相应目录下的上传文件
*/
List<String> filePaths = uploadFileService.getSelectedFilePath(ids);
if(filePaths != null){
for(String filePath:filePaths){
System.out.println("----------filePath is:--------------" + filePath);
String deleteFileRealPath = request.getSession().getServletContext().getRealPath(filePath);
//创建文件目录
File deleteFiledir = new File(deleteFileRealPath);
//如果目录不存在就创建
if(deleteFiledir.exists()){
deleteFiledir.delete();
}
}
}
/**
* 删除数据库里的上传文件信息
*/
uploadFileService.delete(UploadFile.class, ids);
request.setAttribute("message", "删除上传文件成功");
request.setAttribute("urladdress", SetUrl.getUrlAddress("control.uploadfile.list"));
return mapping.findForward("message");
}
}