test1.htm:

<form action="test1.jsp" method="post">


<input type="file" name="image">
<input type="submit" value="上传">
</form>
test1.jsp

<%@ page contentType="text/html;charset=gbk"%>
<%@ page import="java.io.*"%><%
String img = request.getParameter("image");
//这样接收值正确吗?
File file = new File(img);
//File的转换呢?..
FileInputStream in = null;
FileOutputStream out = null;
int b = 0;
try {
  in = new FileInputStream(file);
out = new FileOutputStream("image\\123456789.jpg");
while((b = in.read())!= -1) {
out.write(b);
}
} catch (ClassNotFoundException e) {
System.out.println("找不到指定文件!!");
System.exit(-1);
} catch (IOException e) {
System.out.println("文件复制错误!!!");
System.exit(-1);
} finally {
in.close();
out.close();
}
System.out.println("文件复制成功!!!!!");
%>
<h1>上传成功!!!!!!!!!!!!!!</h1>
上传无法获得成功!~~!~ 请教该怎么更改!~~~~(不用组件!!!)

解决方案 »

  1.   

    String img = request.getParameter("image");
    这个用法是接收连接中字符串值的,不能接收文件。而且本身就应该把文件提到服务器端的某个servlet或者action,不能直接提交给jsp。
      

  2.   

    那提交给servlet 该怎么写啊!!~~  高手请指点!!!!!!!!!!!!!!!!!!!!!!!!
      

  3.   


    拿什么来接收文件!  难道不是request吗?.  
      

  4.   

    参考这篇文章http://www.asm32.net/article_disp.asp?ID=182
      

  5.   

    我个人也只用struts做过文件上传,servlet的方式只能和你一起学习。
      

  6.   

    首先在test1.html中,form的写法应该是
    <FORM METHOD="POST" ACTION="doAddImage.jsp" ENCTYPE="multipart/form-data" height=20>
    表示是以数据流的形式上传的数据。然后在test1.jsp中,以流读取的方式来取得数据流中的数据,再以数据流的形式写入本地文件中。
      

  7.   

    uploadtest.jsp:
    <%@ page pageEncoding="gbk" contentType="text/html;charset=gbk" %>
    <html>
    <head>
    <title>图片上传</title>
    </head>
    <body>
    <form name="uploadForm" action="upload.jsp" method="post" enctype="multipart/form-data">
    <input name="file" type="file"/>
    <input type="submit"/>
    </form>
    </body>
    </html>upload.jsp:
    <%@page pageEncoding="gbk"
    import="org.apache.commons.fileupload.FileUpload,org.apache.commons.fileupload.servlet.ServletFileUpload,org.apache.commons.fileupload.disk.DiskFileItemFactory,java.io.File,java.util.List,java.util.Iterator,org.apache.commons.fileupload.FileItem,org.apache.commons.fileupload.DiskFileUpload"%>
    <%
    //检查输入请求是否为multipart表单数据。
    boolean isMultipart = FileUpload.isMultipartContent(request);
    if (isMultipart) {
    //为该请求创建一个DiskFileUpload对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。
    DiskFileUpload upload = new DiskFileUpload();
    List items = upload.parseRequest(request);
    Iterator itr = items.iterator();
    while (itr.hasNext()) {
    FileItem item = (FileItem) itr.next();
    //检查当前项目是普通表单项目还是上传文件。
    if (!item.isFormField()) {//如果是上传文件,显示文件名。                  
    String fileName=item.getName();//获得文件名,包括路径
                    if(fileName!=null){
                        File fullFile=new File(item.getName());
                        File savedFile=new File("d:\\upload\\",fullFile.getName());
                        item.write(savedFile);
                     }
    out.println("the upload fielname is:" + item.getName());
    out.println("<br>");
    }
    }
    }else {
    out.println("the enctype must be multipart/form-data");
    }
    %>前天上网copy的,用apache的io包和fileupload包。
      

  8.   

    上面代码贴坏了……upload.jsp
    <%@page   pageEncoding="gbk" 
    import="org.apache.commons.fileupload.FileUpload,org.apache.commons.fileupload.servlet.ServletFileUpload,org.apache.commons.fileupload.disk.DiskFileItemFactory,java.io.File,java.util.List,java.util.Iterator,org.apache.commons.fileupload.FileItem,org.apache.commons.fileupload.DiskFileUpload"%> 
    <% 
    //检查输入请求是否为multipart表单数据。 
    boolean   isMultipart   =   FileUpload.isMultipartContent(request); 
    if   (isMultipart)   { 
    //为该请求创建一个DiskFileUpload对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。 
    DiskFileUpload   upload   =   new   DiskFileUpload(); 
    List   items   =   upload.parseRequest(request); 
    Iterator   itr   =   items.iterator(); 
    while   (itr.hasNext())   { 
    FileItem   item   =   (FileItem)   itr.next(); 
    //检查当前项目是普通表单项目还是上传文件。 
    if   (!item.isFormField())   {//如果是上传文件,显示文件名。                                     
    String   fileName=item.getName();//获得文件名,包括路径 
                                    if(fileName!=null){ 
                                            File   fullFile=new   File(item.getName()); 
                                            File   savedFile=new   File("d:\\upload\\",fullFile.getName()); 
                                            item.write(savedFile); 
                                      } 
    out.println("the   upload   fielname   is:"   +   item.getName()); 
    out.println(" <br> "); 


    }else   { 
    out.println("the   enctype   must   be   multipart/form-data"); 

    %>
      

  9.   

    smartupload组件,或者用楼上所说的struts自带的formfile上传都行