浏览器上传文件到服务器端

发布于 2021-11-12 08:22:23 字数 454 浏览 974 评论 11

我想实现从浏览器上传文件到服务器端的功能,页面代码如下:


<body>
 <form action="" method="post" enctype="multipart/form-data">
  <input type="file" name="file"/>
  <input type="submit" value="submit">
 </form>
</body>

服务器端我写了file的getter和setter却得不到,然后又用ServletActionContext(request)获取request发现request里没有提交的参数!

请问各位高手,从浏览器上传文件到服务器端应该怎么做啊

 

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

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

发布评论

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

评论(11

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

我用的就是struts2 的那个FileUpload

静谧 2021-11-18 15:40:10

回复
可以和其他表单一起处理的。你哪里不太清楚?

眼眸 2021-11-18 15:37:09

回复
我只是还是想不通当在一个action下写一个处理方法,然后也是通过form表单提交的,结果在action里却找不到上传文件的值,在这个action里虽然有其他的处理方法但是他们之间应该是相互不影响的啊!提交的时候请求路径是指定到方法的!但是,单独写一个action就没有问题!搞不懂

居里长安 2021-11-18 15:19:14

回复
不影响的

墨洒年华 2021-11-18 15:17:45

回复
但是感觉没有错,就是出不来效果,而且还不知道哪的问题就感觉特别不舒服!我这人有点钻牛角尖了!对了!你的旅游网站的挺好,就是不知道为什么加载挺慢!已经投了一票

海之角 2021-11-18 15:08:40

回复
谢谢,服务器不太好。你可以关注我一下。希望能给你带来学习上的帮助!

夜血缘 2021-11-18 14:50:29
附上一段示例代码~
//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("上传失败!");
		}
	}
断爱 2021-11-18 13:19:56

兄弟 ,你在request.getparameter()是取不不到值的。 可以选择用apache 的

Common-fileupload

文件上传组件!

坏尐絯 2021-11-18 05:39:20

一个是查看自己哪里写错了,还有网站的有插件的。很好用

等风来 2021-11-17 03:15:01

一个是查看自己哪里写错了,还有网站的有插件的。很好用

拍不死你 2021-11-13 10:49:06
附上一段示例代码~
//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("上传失败!");
		}
	}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文