向大侠们求JAVA无组件上传文件的代码,如果能运行的马上给分,不够另外再给

解决方案 »

  1.   

    假如你的表单里面只有一个文件上传控件的话,你可以在Servlet里面用request.getInputStream(); 得到输入流写到本地文件里面。
    但假如还有多个控件的话,我就不知道了。
      

  2.   

    jsp文件上传
    http://blog.csdn.net/AnyJack/archive/2004/11/05/168616.aspx
    http://blog.csdn.net/AnyJack/archive/2004/11/05/168616.aspx
      

  3.   

    很基础的一个做法就是,在ActionForm里面定义一个或几个FormFile的属性(和页面里上传的属性名字一致),然后在Action里面 public void uploadFile(FormFile  pic,String filedir,String picname){
    if(!new File(filedir).isDirectory()){
    new File(filedir).mkdirs();
    }
    int width = 0;int height = 0;
    //上传图片到指定文件夹
    try {
      InputStream zpicStream  = pic.getInputStream();
    OutputStream zpicoutStream = new FileOutputStream(filedir+picname);
    int bytesReader = 0;
    byte[] readbuffer = new byte[8192];
    while((bytesReader = zpicStream.read(readbuffer, 0, 8192))!=-1){
    zpicoutStream.write(readbuffer, 0, bytesReader);
    }
    zpicoutStream.close();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }filedir是上传路径
    picname 是图片名字
      

  4.   

    fileupload 不用组件那是相当不好用.放弃吧
      

  5.   


    这种方法是可以的,但却不能直接读出,原来那上传文件的名字,要想得到原来文件的名字,必须自己手动的读request的header,从里面找出其名字(不是简单的通过指定的方法得到)。此外这种上传的方法,接收到的文件是要比原先上传的文件大,因为它会把request流的header写到文件中。
      

  6.   

    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    String action = request.getParameter("action");
    System.out.println("新闻action=" +action);
    if (action == null || "".equals(action)) {
    return mapping.findForward("error");
    } else if ("newsAdd".equals(action)) {
    try {
    return newsAdd(mapping, form, request, response);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    } else if ("newsQuery".equals(action)) {
    return newsQuery(mapping, form, request, response);
    } else if ("newsModifyQuery".equals(action)) {
    return newsModifyQuery(mapping, form, request, response);
    } else if ("newsModify".equals(action)) {
    try {
    return newsModify(mapping, form, request, response);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    } else if ("newsDel".equals(action)) {
    return newsDel(mapping, form, request, response);
    }else if("newsDetail".equals(action)){
                return newsDetail(mapping,form,request,response);
    }
    request.setAttribute("error", "操作失败!");
    return mapping.findForward("error");
    } /***********************
     * 添加新闻
     * 
     * @throws IOException
     * @throws FileNotFoundException
     * @throws IOException
     **************************/
    private ActionForward newsAdd(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws FileNotFoundException, IOException {
    NewsForm newsForm = (NewsForm) form;
    ActionForward forward = null;
    newsForm.setNews_title(newsForm.getNews_title());
    newsForm.setNews_classid(newsForm.getNews_classid());
    newsForm.setNews_time(newsForm.getNews_time());
    newsForm.setNews_author(newsForm.getNews_author());
    newsForm.setNews_content(newsForm.getNews_content()); if (newsForm.getNews_classid().equals("图片新闻")) {
    newsForm.setNews_photodir(newsForm.getNews_photodir());
    FormFile photo = newsForm.getPhoto();
    response.setContentType("text/html;charset=UTF-8");
    String filename = photo.getFileName();
    if (!(photo.getFileSize() == 0 || filename.trim().equals(""))) {
    InputStream contentStream = photo.getInputStream();
    String savedir = this.getServlet().getServletContext()
    .getRealPath("/images/newsphotos/");
    UUID uuid = UUID.randomUUID();
    String prefixName = uuid.toString();// 图片上传
    String extName = filename.substring(filename.lastIndexOf('.'));
    if (!extName.equals(".jpg") && !extName.equals(".JPG")
    && !extName.equals(".gif") && !extName.equals(".GIF")
    && !extName.equals(".bmp") && !extName.equals(".BMP")) {
    request.setAttribute("error",
    "图片的格式只能为:“JPG”,“jpg”,“gif”,“bmp”,“BMP”格式!");
    forward = mapping.findForward("error");
    } else {
    if (photo.getFileSize() > 2 * 1024 * 1024) {
    request.setAttribute("error", "上传的图片大小不能超过2M!");
    forward = mapping.findForward("error");
    } else {
    String newfilename = prefixName + extName;
    newsForm.setNews_photodir(newfilename);
    System.out.println("getNews_photodir="
    + newsForm.getNews_photodir());
    File filephoto = new File(savedir, newfilename);
    FileOutputStream fos = new FileOutputStream(filephoto);
    int a = newsdao.insert(newsForm);
    if (a == 0) {
    request.setAttribute("error", "新闻添加失败!");
    forward = mapping.findForward("error");
    } else if (a == 2) {
    request.setAttribute("error", "该条新闻已经添加!");
    forward = mapping.findForward("error");
    } else {
    int len = 0;
    byte[] buf = new byte[1024];
    while ((len = contentStream.read(buf)) != -1) {
    fos.write(buf, 0, len);
    }
    contentStream.close();
    fos.close();
    forward = mapping.findForward("newsAdd");
    }
    }
    }
    } else {
    request.setAttribute("error", "请选择您要上传的链接图片!");
    forward = mapping.findForward("error");
    }
    } else {
    int a = newsdao.insert(newsForm);
    if (a == 0) {
    request.setAttribute("error", "新闻添加失败!");
    forward = mapping.findForward("error");
    } else if (a == 2) {
    request.setAttribute("error", "该条新闻已经添加!");
    forward = mapping.findForward("error");
    }
    else{
    forward = mapping.findForward("newsAdd");
    }
    return forward;
    }
    return forward;
    }这个是很久以前做新闻项目时候用的struts1上传图片文件的方法,好久没有用struts1了
      

  7.   

    我这是在项目里给你拷贝的,原来是用struts1.2:
    (1)action文件:import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.upload.FormFile;import com.cvicse.form.UploadForm;public class UploadAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws FileNotFoundException, IOException {
    String dir = servlet.getServletContext().getRealPath("../../upload");
    UploadForm uf = (UploadForm) form;
    FormFile file = uf.getFile();
    if (file == null) {
    return mapping.findForward("success");
    }
    String fname = file.getFileName();
    String size = Integer.toString(file.getFileSize()) + "bytes";
    InputStream is = file.getInputStream();
    OutputStream os = new FileOutputStream(dir + "/" + fname);
    System.out.println(dir);
    int bytes = 0;
    byte[] buffer = new byte[1048576];
    while ((bytes = is.read(buffer, 0, 1048576)) != -1) {
    os.write(buffer, 0, bytes);
    }
    os.close();
    is.close();
    uf.setFname(fname);
    uf.setSize(size);
    uf.setDir(dir + "/" + fname);
    //System.out.println("http://192.168.132.118:8080/updown/" +dir+"\\"+ fname);
    file.destroy();
    return mapping.findForward("success");
    }}(2)jsp文件:<%@ page language="java" contentType="text/html; charset=GBK"%>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
    <%
    response.setHeader("Cache-Control", "no-store");
    response.setHeader("Pragma", "no-cache");
    response.setDateHeader("Expires", 0);
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html:form action="uploadAction.do" method="post"
    enctype="multipart/form-data">
    请选择您要上传的文件:
    <html:file property="file"></html:file>
    <html:submit />
    <p>
    <logic:notEmpty name="uploadForm" property="fname">
    您刚上传的文件是:
    <ul>
    <li>
    名 称:
    <bean:write name="uploadForm" property="fname" />
    <li>
    文件大小:
    <bean:write name="uploadForm" property="size" />
    <li>
    <a href="<bean:write name="uploadForm" property="dir" />"><bean:write
    name="uploadForm" property="fname" />
    </a>
    </ul>
    </logic:notEmpty>
    </html:form>
    解决思路就是:把本地的文件读到web服务器的某一个目录。如果还有不明白的,可以加我为好友,乐意效劳!
    希望早解决问题啊。帮你顶一下,呵呵!!
      

  8.   

    如果什么组件都不用的话 那是相当的麻烦 判断formItem 都一大堆的  放弃吧  ······有简单的方式为什么要走难的呢