J2EE中用户上传文件到服务器功能实现???

发布于 2021-11-17 12:22:22 字数 296 浏览 794 评论 17

@jeffsui 你好,想跟你请教个问题:

大婶(错了应该是大神。。。)

我现在把网站的下载功能做好了;不过下面做的是让用户把写好的文档传到服务器上,我们这边可以下载到本地。。。应该是用叫什么getpath();

具体框架代码怎么写啊?

求大婶指点迷津!!!回头咱们加好友一起研究各自困惑的问题

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(17

情场扛把子 2021-11-18 15:57:59

谢谢大哥!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

凡尘雨 2021-11-18 15:57:59

osc上的资源很多的,要善于利用,呵呵

终遇你 2021-11-18 15:57:59

谢谢,我还是个小小的菜鸟以后咱们常沟通。。。

小情绪 2021-11-18 15:57:59

大家都是从小小鸟过来的

卸妝后依然美 2021-11-18 15:57:59

呵呵就是

悟红尘 2021-11-18 15:57:55

回复
最佳答案喽~

情痴 2021-11-18 15:57:49

回复
老大,有没有在JSP页面上直接实现的代码啊???

嘦怹 2021-11-18 15:57:45

附一段 commons-fileupload上传组件的servlet实现代码

public class FileUploadServlet extends AbstractItemServlet {
		
	private File uploadPath;
	
	private File tempPath;
	
	public void doPost(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		//form提交采用multipart/form-data,无法采用req.getParameter()取得数据
		//String itemNo = req.getParameter("itemNo");
		//System.out.println("itemNo======" + itemNo);
		DiskFileItemFactory factory = new DiskFileItemFactory();
		// maximum size that will be stored in memory
		factory.setSizeThreshold(4096);
		// the location for saving data that is larger than getSizeThreshold()
		factory.setRepository(tempPath);

		ServletFileUpload upload = new ServletFileUpload(factory);
		// maximum size before a FileUploadException will be thrown
		upload.setSizeMax(1000000 * 20);
		try {
			List fileItems = upload.parseRequest(req);
			String itemNo = "";
			for (Iterator iter = fileItems.iterator(); iter.hasNext();) {
				FileItem item = (FileItem) iter.next();
				
				//是普通的表单输入域
				if(item.isFormField()) {
					if ("itemNo".equals(item.getFieldName())) {
						itemNo = item.getString();
					}
				}
				//是否为input="type"输入域
				if (!item.isFormField()) {
					String fileName = item.getName();
					long size = item.getSize();
					if ((fileName == null || fileName.equals("")) && size == 0) {
						continue;
					}
					//截取字符串 如:C:WINDOWSDebugPASSWD.LOG
					fileName = fileName.substring(fileName.lastIndexOf("\") + 1, fileName.length());
					item.write(new File(uploadPath, fileName));
					itemManager.uploadItemImage(itemNo, fileName);
				}
			}
			res.sendRedirect(req.getContextPath() + "/servlet/item/SearchItemServlet");
		} catch (Exception e) {
			e.printStackTrace();
			throw new ApplicationException("上传失败!");
		}
	}

	public void init() throws ServletException {
		uploadPath = new File(getServletContext().getRealPath("upload"));
		System.out.println("uploadPath=====" + uploadPath);
		//如果目录不存在
		if (!uploadPath.exists()) {
			//创建目录
			uploadPath.mkdir();
		}
		
		//临时目录
		tempPath = new File(getServletContext().getRealPath("temp"));
		if (!tempPath.exists()) {
			tempPath.mkdir();
		}
		//显示调用父类的init方法
		super.init();
	}
}

 

勿忘初心 2021-11-18 15:57:27

请问您有差不多的框架代码吗?小弟参考一下,真的没思路啊大哥

风透绣罗衣 2021-11-18 15:57:11

首先我不是大神,我只是个普通搞It的。

文件上传有很多实现。

1.commons-fileUpload框架

2.cos 开源中国用的就是这个组件

3.http

当然还有其他方式,你可以自己选择!

各自安好 2021-11-18 15:53:05

大哥谢谢。我好好看看,有什么问题咱们再沟通,,,

妖妓 2021-11-18 15:52:36

http://www.oschina.net/search?q=%E4%B8%8A%E4%BC%A0&scope=project

这里有很多上传组件,参考一下吧

孤檠 2021-11-18 15:49:47

大哥问一下我改了一下JSP页面的代码,基本的模块出来了,请问一下文件上传到服务器放在哪啊?然后我们主服务器这可以下载

坚持沉默 2021-11-18 15:35:04

回复
源码里面不是有路径么?路径你自己选择吧。你运行一下代码就晓得了!

执手闯天涯 2021-11-18 15:03:18

回复
谢谢大哥

背叛残局 2021-11-18 14:49:50

附一段 commons-fileupload上传组件的servlet实现代码

public class FileUploadServlet extends AbstractItemServlet {
		
	private File uploadPath;
	
	private File tempPath;
	
	public void doPost(HttpServletRequest req, HttpServletResponse res)
			throws ServletException, IOException {
		//form提交采用multipart/form-data,无法采用req.getParameter()取得数据
		//String itemNo = req.getParameter("itemNo");
		//System.out.println("itemNo======" + itemNo);
		DiskFileItemFactory factory = new DiskFileItemFactory();
		// maximum size that will be stored in memory
		factory.setSizeThreshold(4096);
		// the location for saving data that is larger than getSizeThreshold()
		factory.setRepository(tempPath);

		ServletFileUpload upload = new ServletFileUpload(factory);
		// maximum size before a FileUploadException will be thrown
		upload.setSizeMax(1000000 * 20);
		try {
			List fileItems = upload.parseRequest(req);
			String itemNo = "";
			for (Iterator iter = fileItems.iterator(); iter.hasNext();) {
				FileItem item = (FileItem) iter.next();
				
				//是普通的表单输入域
				if(item.isFormField()) {
					if ("itemNo".equals(item.getFieldName())) {
						itemNo = item.getString();
					}
				}
				//是否为input="type"输入域
				if (!item.isFormField()) {
					String fileName = item.getName();
					long size = item.getSize();
					if ((fileName == null || fileName.equals("")) && size == 0) {
						continue;
					}
					//截取字符串 如:C:WINDOWSDebugPASSWD.LOG
					fileName = fileName.substring(fileName.lastIndexOf("\") + 1, fileName.length());
					item.write(new File(uploadPath, fileName));
					itemManager.uploadItemImage(itemNo, fileName);
				}
			}
			res.sendRedirect(req.getContextPath() + "/servlet/item/SearchItemServlet");
		} catch (Exception e) {
			e.printStackTrace();
			throw new ApplicationException("上传失败!");
		}
	}

	public void init() throws ServletException {
		uploadPath = new File(getServletContext().getRealPath("upload"));
		System.out.println("uploadPath=====" + uploadPath);
		//如果目录不存在
		if (!uploadPath.exists()) {
			//创建目录
			uploadPath.mkdir();
		}
		
		//临时目录
		tempPath = new File(getServletContext().getRealPath("temp"));
		if (!tempPath.exists()) {
			tempPath.mkdir();
		}
		//显示调用父类的init方法
		super.init();
	}
}

 

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文