求JAVA无组件上传文件的代码 向大侠们求JAVA无组件上传文件的代码,如果能运行的马上给分,不够另外再给 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 假如你的表单里面只有一个文件上传控件的话,你可以在Servlet里面用request.getInputStream(); 得到输入流写到本地文件里面。但假如还有多个控件的话,我就不知道了。 jsp文件上传http://blog.csdn.net/AnyJack/archive/2004/11/05/168616.aspxhttp://blog.csdn.net/AnyJack/archive/2004/11/05/168616.aspx 很基础的一个做法就是,在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 是图片名字 fileupload 不用组件那是相当不好用.放弃吧 这种方法是可以的,但却不能直接读出,原来那上传文件的名字,要想得到原来文件的名字,必须自己手动的读request的header,从里面找出其名字(不是简单的通过指定的方法得到)。此外这种上传的方法,接收到的文件是要比原先上传的文件大,因为它会把request流的header写到文件中。 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了 我这是在项目里给你拷贝的,原来是用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服务器的某一个目录。如果还有不明白的,可以加我为好友,乐意效劳!希望早解决问题啊。帮你顶一下,呵呵!! 如果什么组件都不用的话 那是相当的麻烦 判断formItem 都一大堆的 放弃吧 ······有简单的方式为什么要走难的呢 ???请问jsp如何将获得的时间保存在session中!!! 大家有人用过 Quartz任务调度 框架吗? 不问不行了,我再不会,就不学jsp了,真难学啊。 jsp工作流程的问题(讨论者有分)! 很菜的一个问题,但是做不出不能回家睡觉! CSV问题请教! 表格的横向移动怎么实现? 请问一个JavaScript中的数字转化问题 哪儿有《jsp深入编程》这本书电子版下载?谢谢!! 我的问题就是多多 tomcat自动从svn更新并发布的问题 Please help me take a look at this ext coding,Why I could not get data from ds
但假如还有多个控件的话,我就不知道了。
http://blog.csdn.net/AnyJack/archive/2004/11/05/168616.aspx
http://blog.csdn.net/AnyJack/archive/2004/11/05/168616.aspx
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 是图片名字
这种方法是可以的,但却不能直接读出,原来那上传文件的名字,要想得到原来文件的名字,必须自己手动的读request的header,从里面找出其名字(不是简单的通过指定的方法得到)。此外这种上传的方法,接收到的文件是要比原先上传的文件大,因为它会把request流的header写到文件中。
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了
(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服务器的某一个目录。如果还有不明白的,可以加我为好友,乐意效劳!
希望早解决问题啊。帮你顶一下,呵呵!!