求JAVA无组件上传文件的代码

jack_liu4Ye 2010-01-29 05:02:27
向大侠们求JAVA无组件上传文件的代码,如果能运行的马上给分,不够另外再给
...全文
1064 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiwosuoaillx 2010-07-01
  • 打赏
  • 举报
回复
ujj
wxzyydy 2010-01-31
  • 打赏
  • 举报
回复
wsl542416776 2010-01-31
  • 打赏
  • 举报
回复
如果什么组件都不用的话 那是相当的麻烦 判断formItem 都一大堆的 放弃吧 ······有简单的方式为什么要走难的呢
重返春季 2010-01-30
  • 打赏
  • 举报
回复
我这是在项目里给你拷贝的,原来是用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服务器的某一个目录。如果还有不明白的,可以加我为好友,乐意效劳!
希望早解决问题啊。帮你顶一下,呵呵!!
Bleibo 2010-01-29
  • 打赏
  • 举报
回复
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了
successgl 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhang168 的回复:]
很基础的一个做法就是,在ActionForm里面定义一个或几个FormFile的属性(和页面里上传的属性名字一致),然后在Action里面
Java codepublicvoid 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=newbyte[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 是图片名字
[/Quote]

这种方法是可以的,但却不能直接读出,原来那上传文件的名字,要想得到原来文件的名字,必须自己手动的读request的header,从里面找出其名字(不是简单的通过指定的方法得到)。此外这种上传的方法,接收到的文件是要比原先上传的文件大,因为它会把request流的header写到文件中。
hp_innovation 2010-01-29
  • 打赏
  • 举报
回复
fileupload 不用组件那是相当不好用.放弃吧
后天星期一 2010-01-29
  • 打赏
  • 举报
回复
很基础的一个做法就是,在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 是图片名字
crazylaa 2010-01-29
  • 打赏
  • 举报
回复
jsp文件上传
http://blog.csdn.net/AnyJack/archive/2004/11/05/168616.aspx
http://blog.csdn.net/AnyJack/archive/2004/11/05/168616.aspx
zhangyy130 2010-01-29
  • 打赏
  • 举报
回复
假如你的表单里面只有一个文件上传控件的话,你可以在Servlet里面用request.getInputStream(); 得到输入流写到本地文件里面。
但假如还有多个控件的话,我就不知道了。
dr_lou 2010-01-29
  • 打赏
  • 举报
回复
看我头像
jack_liu4Ye 2010-01-29
  • 打赏
  • 举报
回复
这个真的不会,求大虾们帮解决一下
lstar66 2010-01-29
  • 打赏
  • 举报
回复
如果不是远程文件上传,那应该好现实呀
lstar66 2010-01-29
  • 打赏
  • 举报
回复
帮顶~~~~~~~~~~
呵呵,我用的是struts组件来实现文件上传的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧