用JSPSmartUpload下载:http://61.131.30.54/123/Develop/Java/

解决方案 »

  1.   

    我用jspsmartupload了如果和其他的文本框不放到同一个表单下,上传功能是可以实现的可是为了页面的简洁。我想放到一起,用一个按扭提交,进行添加但在form 中加上enctype="multipart/form-data",其他内容就不能添加
    去掉enctype="multipart/form-data",又不能上传了 why?
      

  2.   

    这个地址http://www.w3.org/TR/REC-html40/interact/forms.html#form-content-type上有Form的详细介绍,其中有这样的例子: <FORM action="http://server.com/cgi/handle"
           enctype="multipart/form-data"
           method="post">
       <P>
       What is your name? <INPUT type="text" name="submit-name"><BR>
       What files are you sending? <INPUT type="file" name="files"><BR>
       <INPUT type="submit" value="Send"> <INPUT type="reset">
     </FORM>同时有上传和一般输入,enctype也是multipart/form-data,所以这里是对的,问题在于server端如何处理请求。
      

  3.   

    主要是接收页面的处理.贴个例子给你看看我的代码也贴一下
    try
            {
                response.setContentType(CONTENT_TYPE);
                PrintWriter out = response.getWriter();
                String server_path=request.getRealPath("/");
                String saveDirectory =server_path+"/file_pic/";
                String tmpDirectory = "c:\\";
                int maxPostSize = 1024 * 1024;
                boolean is_legal_file=false;
                String FileDescription = null;
                String FileName = null;
                long FileSize = 0;
                String ContentType = null;
                int count = 0 ;            java.util.Vector text = new java.util.Vector();//存放非文件域信息            java.util.Vector vector_file = new java.util.Vector();//存放文件域信息            DiskFileUpload upload = new DiskFileUpload();//初始化上传组件            upload.setSizeThreshold(4096);//设置文件流大小            upload.setSizeMax(maxPostSize);//设置最大文件,超过则临时存放到:tmpDirectory            upload.setRepositoryPath(tmpDirectory);//设置临时存放点            List  items = upload.parseRequest(request);//取得request            Iterator iter = items.iterator();//初始化
                int file_no=0;
                int tmp = 0;
                FileItem tmpItem = null;
    //-------------------------------------------------    
            while (iter.hasNext())//表单有多个域
    //-------------------------------------------------     
           {
                    tmp++;
    //-------------------------------------------------
                    FileItem item = (FileItem) iter.next();
    //-------------------------------------------------
                    if (item.isFormField())//如果是非文件域信息
                    {
                        FileDescription = item.getString();//取得非文件域信息,皆为字符串类型
                        text.addElement(FileDescription);//加入到存放非文件域信息之向量
                    }
                    else //如果是文件域信息
                    {
                        file_no++;
                        FileName = item.getName();
                        try //因为不同的浏览器会造成 path + filename, 有些则只有 filename
                        {
                            // for wintel platform
                            FileName = FileName.substring(FileName.lastIndexOf("\\")+1);//取得档案名称
                            // for unix-like platform
                            FileName = FileName.substring(FileName.lastIndexOf("/")+1);//取得档案名称
                        }
                        catch (Exception ex)
                        {
                            System.out.println("取文件名出错:"+ex);
                        }
                        ContentType = item.getContentType();//取得档案类型
                        FileSize = item.getSize();//取得档案大小
                        tmpItem = item;                    try // 將檔案寫入存檔目錄
                        {
                            //转换文件名
                            java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyyMMddhhmmss");
                            java.util.Date currentTime_1 = new java.util.Date();
                            String ss=formatter.format(currentTime_1);
                            String FileName_houzhui=FileName.substring(FileName.lastIndexOf("."));
                            FileName=ss+file_no+FileName_houzhui;
                            vector_file.addElement(FileName);
                            File uploadedFile = new File(saveDirectory + FileName);
                            tmpItem.write(uploadedFile);
                        }
                        catch(Exception ex)
                        {
                            System.out.println("保存文件出错:"+ex);
                            System.out.println("错误位置:/servlet/com.sxztb.upload.uploadServlet");
                        }
                    }
                }            //转到写文件类,完成写文件
                try
                {
                upload_write_file_servlet tody_log = new upload_write_file_servlet(server_path);             tody_log.log_wite((String)text.elementAt(0),(String)text.elementAt(1),(String)text.elementAt(2),(String)text.elementAt(3),(String)vector_file.elementAt(0),(String)vector_file.elementAt(1),(String)vector_file.elementAt(2));
                }
                catch (Exception e)
                {
                    System.out.println("生成JSP文件出现错误!"+e);
                    System.out.println("错误位置:/servlet/com.sxztb.upload.uploadServlet");
                }
                //写文件结束,转到相应目录
                getServletContext().getRequestDispatcher("/news/").forward(request,response);
            }
            catch(Exception e)
            {
                System.out.println("/servlet/com.sxztb.upload.uploadServlet出错"+e);
            }
    *******************************************************************************************************************上述的取得request中的表单中的每一个元素,可以不用迭代器 iterator.
    List类中的List.size()取得多少个元素,
    List类中的List.get(i)取得某个元素,
    以上的这几行代码可以这样改!:
    -------------------------------------------------    
            while (iter.hasNext())//表单有多个域
    -------------------------------------------------     
          
    改:
            for(int i=0;i<items.size();i++)   //items是List对象
    -------------------------------------------------
                    FileItem item = (FileItem) iter.next();
    -------------------------------------------------

                    FileItem item = (FileItem) items.get(i);
      

  4.   

    SmartUpload aUpload = new SmartUpload();
    aUpload.initialize(config,request,response);
    aUpload.upload();
    String title=aUpload.getRequest().getParameter("title");