我要实现多张图片分开上传问题,现在是图片可以单独上传的服务器了,查看没问题,关键是路径保存只能保存一张图片地址,是用框架做的,循环怎么解决存路径问题,显示页面: <td colspan="3" bgcolor="#FFFFFF">&nbsp;&nbsp;
            <input name="img" type="text" id="img" style="width:100px">
             <a href="javascript:toExit('show','upimg')">图片</a>
<iframe width=280 height=20 src='editor/upapi/uploadtitlepic.jsp'
scrolling='no' frameborder='0' id="upimg"
style="visibility:hidden;"></iframe></td>
上传文件:
<form action="upfile.jsp" method="post" enctype="multipart/form-data" name="upform" onSubmit="return checkform();">
<input name="file" id="file" type="file" class="input" />
<input name="Submit" type="submit" class="button" value="上 传" />
UPFILE.JSP文件:
<jsp:useBean id="date" class="com.kulilac.GetDate" />
<jsp:useBean id="rad" class="com.kulilac.Rad" />
<%
String from = request.getHeader("Referer");
String imgid; String url = "upload/";
String url2 = "upload/shop/"; String geShi = "yyyyMMddhhmmss";
String riqi = date.getBygeshi(geShi);
int maxId = 9;
int radok = rad.getByMaxid(maxId);
String newFilename = riqi + radok; String fileurl; String filemulu = date.getBygeshi("yyyyMMdd");
String realmulu = request.getRealPath("/") + url;
String realmulu2 = request.getRealPath("/") + url2;
java.io.File mulu = new java.io.File(realmulu + filemulu);
java.io.File mulu2 = new java.io.File(realmulu2 + filemulu);
mulu.mkdir();
mulu2.mkdir(); if (from.indexOf("titlepic") > 0) {
imgid = "img";
fileurl = "" + url2 + filemulu + "/" + newFilename + ".jpg";
} else {
imgid = "picture";
fileurl = "" + url + filemulu + "/" + newFilename + ".jpg";
} SmartUpload mySmartUpload = new SmartUpload();
long file_size_max = 1048576;//图片大小设置 //初始化上传
mySmartUpload.initialize(pageContext); //只允许上载此类文件
try {
mySmartUpload.setAllowedFilesList("jpg,Jpg,JPG,GIF,gif,Gif");
//上载文件 
mySmartUpload.upload();
} catch (Exception e) { out
.println("<script language=javascript>alert('上传格式错误!');   history.back(-1);</script>"); return; }
try {
com.jspsmart.upload.File myFile = mySmartUpload.getFiles()
.getFile(0);
if (myFile.isMissing()) { out
.println("<script language=javascript>alert('必须选择图片!');   history.back(-1);</script>"); return; } else {
int file_size = myFile.getSize(); //取得文件的大小  
if (file_size < 10240) {
out
.println("<script language=javascript>alert('上传图片大小应控制在10K~1M之间!');   history.back(-1);</script>");
return;
} String saveurl = "";
if (file_size < file_size_max) {
saveurl = realmulu + filemulu + "/" + newFilename
+ ".jpg"; //保存路径
myFile.saveAs(saveurl, mySmartUpload.SAVE_PHYSICAL); //-----------------------上传完成,开始生成缩略图-------------------------    
java.io.File file = new java.io.File(saveurl); //读入刚才上传的文件
String newurl = realmulu2 + filemulu + "/"
+ newFilename + ".jpg"; //新的缩略图保存地址
Image src = javax.imageio.ImageIO.read(file); //构造Image对象
float tagsize = 300;
int old_w = src.getWidth(null); //得到源图宽
int old_h = src.getHeight(null);
int new_w = 0;
int new_h = 0; //得到源图长
//int tempsize;
float tempdouble;
if (old_w > old_h) {
tempdouble = old_w / tagsize;
} else {
tempdouble = old_h / tagsize;
}
new_w = Math.round(old_w / tempdouble);
new_h = Math.round(old_h / tempdouble);//计算新图长宽
BufferedImage tag = new BufferedImage(new_w, new_h,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src, 0, 0, new_w, new_h,
null); //绘制缩小后的图
FileOutputStream newimage = new FileOutputStream(newurl); //输出到文件流
JPEGImageEncoder encoder = JPEGCodec
.createJPEGEncoder(newimage);
encoder.encode(tag); //近JPEG编码
newimage.close(); out.print("<SCRIPT language=''javascript''>");
out.print("window.parent.document.getElementById('"
+ imgid + "').value='" + fileurl + "';");
out.print("window.location.href='upload.jsp';");
out.print("</script>"); } else {
out.print("<SCRIPT language=''javascript''>");
out.print("alert(''上传文件大小不能超过"
+ (file_size_max / 1048576) + "M'');");
out.print("history.back(-1);");
out.print("</SCRIPT>");
}
}
} catch (Exception e) {
e.toString();
}
%>

解决方案 »

  1.   

    String str[] = { "a", "b", "c", "d", "e", "f", "g",
                                  "h", "i", "j" };
                 Random tmp = new Random();
                 fileName = System.currentTimeMillis()
                                      + str[tmp.nextInt(10)] + "." + fileType;
    文件名重复了,
    用这个吧,一般来说在非高并发条件下不会重复的
      

  2.   

    多文件上传啊,用这个吧
    http://download.csdn.net/source/1037046
      

  3.   


    为什么要存储文件路径,html的file路径已经有了
      

  4.   

    在页面设置一个隐藏域,没上传一张把图片地址放隐藏域里面 多张图片的用一个特殊符号分开比如@#什么的,然后点击上传的时候在action中把路径拆出来 循环上传