做文件上传的时候,规定用户可以同时上传5个文件,然后用hibernate来进行存储,但只能存储最后一条,不知道为什么,求高人解答
源代码如下:
public class UpLodeSourceAction extends Action {
/*
 * Generated Methods
 */ /**
 * Method execute
 * 
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return ActionForward
 */
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) { UpLodeSourceForm uplodeForm = (UpLodeSourceForm) form;// TODO

TbuserDAO TbuserDao = new TbuserDAO();
TbsourceDAO TbsourceDao = new TbsourceDAO();
Tbsource source = new Tbsource();
Tbuser CurrentUser = TbuserDao.findById(1);

FormFile[] myfileArray = new FormFile[5];
myfileArray[0] = uplodeForm.getMyfile();
myfileArray[1] = uplodeForm.getMyfile1();
myfileArray[2] = uplodeForm.getMyfile2();
myfileArray[3] = uplodeForm.getMyfile3();
myfileArray[4] = uplodeForm.getMyfile4();
// FormFile myfile = uplodeForm.getMyfile();
String[] filename = new String[5];   
String[] desPath = new String[5];    //目的地址
String[] desCription = new String[5];  //去掉后缀的文件名
String[] freFix = new String[5];    //文件的后缀。

int bytesum = 0;
byte[] byteread = new byte[1444];

for (int i = 0; i < 5; i++) {
if(myfileArray[i].getFileSize() !=0){
Session session = TbsourceDao.getSession();
session.getTransaction().begin();
Random ran = new Random();
int num = ran.nextInt(100);
filename[i] = myfileArray[i].getFileName();
// 取得文件存放的目的位置。。
freFix[i] = filename[i].substring(filename[i].lastIndexOf(".")+1).toLowerCase();
desCription[i] = filename[i].substring(0,filename[i].indexOf("."));
         desPath[i] = "D://Program Files//attach//"+Mytool.getfiledate()+num+"."+freFix[i];
System.out.println(desCription[i]);
System.out.println(desPath[i]);
//将数据存入数据库


source.setSourceDate(Mytool.getdate());
source.setSourceDescription(desCription[i]);
source.setSourcePath(desPath[i]);
source.setTbuser(CurrentUser);
session.save(source);
session.getTransaction().commit();

}
}

return null; }
}

解决方案 »

  1.   

    看数据拿到的有没有问题,如果都正确就是编码有误,通常我做这种都是用一个数组,每读到一条信息把他放进数组,每一个之间用逗号隔开,然后循环遍历这个数组,插入数据库。应该和这个类似:                          String[] userhobbies=daf.getStrings("hobbl");
    if(null!=userhobbies && userhobbies.length>0){
    String hobby="";
    for (String h : userhobbies) {
    hobby+=h+",";
    }
    uif.setHobbl(hobby.substring(0,hobby.length()-1));
    }