文件管理 · 2024年3月19日

jsp上传文件enctype|jsp上传图片最好完整代码100分!

『壹』 jsp中文件上传enctype="multipart/form-data"是什么意思

因为只有这样传 传过去的值是以二进制的形式传的

『贰』 jsp中文件上传的时候form表单加了enctype属性时为什么request.getparmater()传不过值

有了enctype是是用2进制递交数据的

『叁』 如何在servlet得到jsp上传的文件的文件名

可以使用commons-fileupload组件实现文件上传,步骤如下:1、添加jar包:commons-fileupload-x.x.x.jar和commons-io-2.4.jar2、编写或修改form表单 1) 提交方式必须是post 2) 为表单增加属性enctype="multipart/form-data" 3) 为文件上传单独提供servlet,因为增加enctype属性后,无法使用常规的请求对象来获取提交的数据3、使用Commons-FileUpload组件实现文件的上传 1) 确定本次请求是否是文件上传请求 boolean flag=ServletFileUpload.isMultipartContent(request); 2) 创建文件上传的工厂对象 FileItemFactory factory=new DiskFileItemFactory(); 3) 创建ServletFileUpload对象,并将工厂对象作为参数传入 ServletFileUpload upload=new ServletFileUpload(factory); 4) 使用上传对象从请求对象中解析出提交的所有表单元素 List<FileItem> lstForms=upload.parseRequest(request); 5) 遍历表单元素集合,实现取出表单元素和上传文件 //遍历所有表单元素 for (FileItem fileItem : lstForms) { //判断每一个表单元素是否是普通表单 if(fileItem.isFormField()){ System.out.println(fileItem.getString("UTF-8")); }else{ //上传前准备工作 //a、上传后的路径this.getServletContext().getRealPath("/")会出去当前项目在 部署的服务器上的绝对路径 String path=this.getServletContext().getRealPath("/")+"files/"; //b、找出要上传的文件的名字 String fileName=fileItem.getName(); fileName=fileName.substring(fileName.lastIndexOf("\\")+1); //c、上传 fileItem.write(new File(path+fileName)); out.println("<h2>"+fileName+"上传成功!</h2>");

『肆』 jsp 文件上传和下载

1.jsp页面 <s:form action="fileAction" namespace="/file" method="POST" enctype="multipart/form-data"> <!– name为后台对应的参数名称 –> <s:file name="files" label="file1"></s:file> <s:file name="files" label="file2"></s:file> <s:file name="files" label="file3"></s:file> <s:submit value="提交" id="submitBut"></s:submit> </s:form>2.Action //单个文件上传可以用 File files,String filesFileName,String filesContentType //名称要与jsp中的name相同(三个变量都要生成get,set) private File[] files; // 要以File[]变量名开头 private String[] filesFileName; // 要以File[]变量名开头 private String[] filesContentType; private ServletContext servletContext; //Action调用的上传文件方法 public String execute() { ServletContext servletContext = ServletActionContext.getServletContext(); String dataDir = servletContext.getRealPath("磨脊尘/file/upload"); System.out.println(dataDir); for (int i = 0; i < files.length; i++) { File saveFile = new File(dataDir, filesFileName[i]); files[i].renameTo(saveFile); } return "success"; }3.配置上传文件临时文件夹(在struts.xml中配置) <constant name="struts.multipart.saveDir" value="c:/temp"/>文件下载1.下载的url(到Action) <a href="${pageContext.request.contextPath}/file/fileAction!down.action">下载</a>2.struts.xml配置 <package name="file" namespace="野神/file" extends="struts-default"> <action name="fileAction" class="com.struts2.file.FileAction"> <!– 下载文件配置 –> <!–type 为 stream 应用 StreamResult 处理–> <result name="down" type="stream"> <!– 不管实际类型,待下载文件 ContentType 统一指定为 application/octet-stream 默认为 text/plain –> <param name="contentType">application/octet-stream</param> <!– 默认就是 inputStream,它将会指示 StreamResult 通过 inputName 属性值的 getter 方法, 比如这里就是 getInputStream() 来获取下载文件的内容,意味着瞎禅你的 Action 要有这个方法 –> <param name="inputName">inputStream</param> <!– 默认为 inline(在线打开),设置为 attachment 将会告诉浏览器下载该文件,filename 指定下载文 件保有存时的文件名,若未指定将会是以浏览的页面名作为文件名,如以 download.action 作为文件名, 这里使用的是动态文件名,${fileName}, 它将通过 Action 的 getFileName() 获得文件名 –> <param name="contentDisposition">attachment;filename="${fileName}"</param> <!– 输出时缓冲区的大小 –> <param name="bufferSize">4096</param> </result> </action> </package>3.Action //Action调用的下载文件方法 public String down() { return "down"; } //获得下载文件的内容,可以直接读入一个物理文件或从数据库中获取内容 public InputStream getInputStream() throws Exception { String dir = servletContext.getRealPath("/file/upload"); File file = new File(dir, "icon.png"); if (file.exists()) { //下载文件 return new FileInputStream(file); //和 Servlet 中不一样,这里我们不需对输出的中文转码为 ISO8859-1 //将内容(Struts2 文件下载测试)直接写入文件,下载的文件名必须是文本(txt)类型 //return new ByteArrayInputStream("Struts2 文件下载测试".getBytes()); } return null; } // 对于配置中的 ${fileName}, 获得下载保存时的文件名 public String getFileName() { String fileName ="图标.png"; try { // 中文文件名也是需要转码为 ISO8859-1,否则乱码 return new String(fileName.getBytes(), "ISO8859-1"); } catch (UnsupportedEncodingException e) { return "icon.png"; } }

『伍』 jsp上传图片,最好完整代码。100分!

upfile.jsp 文件代码如下:<form method="post" action="uploadimage.jsp" name="form1" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submIT" name="sub" value="upload"> </form> <form method="post" action="uploadimage.jsp" name="form1" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" name="sub" value="upload"> </form><STRONG><FONT color=#ff0000>uploadimage.jsp</FONT></STRONG> 文件代码如下: uploadimage.jsp文件代码如下:view plain to clipboardprint?<PRE class=java name="code"><%@ page language="java" pageEncoding="gb2312"%> <%@ page import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*"%> <%@ page import="mainClass.*" %> <html> <head> <title>My JSP 'uploadimage.jsp' starting page</title> </head> <body> <% SmartUpload sma=new SmartUpload(); long file_max_size=4000000; String filename1="",ext="",testvar=""; String url="uploadfiles/"; sma.initialize(pageContext); try { sma.setAllowedFilesList("jpg,gif"); sma.upload(); }catch(Exception e){ %> <script language="jscript"> alert("只允许上传jpg,gif图片") window.location.href="upfile.jsp" </script> <% } try{ com.jspsmart.upload.File myf=sma.getFiles().getFile(0); if(myf.isMissing()){ %> <script language="jscript"> alert("请选择要上传的文件!") window.location.href="upfile.jsp" </script> <% }else{ ext=myf.getFileExt(); int file_size=myf.getSize(); String saveurl=""; if(file_size < file_max_size){ Calendar cal=Calendar.getInstance(); String filename=String.valueOf(cal.getTimeInMillis()); saveurl=request.getRealPath("/")+url; saveurl+=filename+"."+ext; myf.saveAs(saveurl,sma.SAVE_PHYSICAL); myclass mc=new myclass(request.getRealPath("data/data.mdb")); mc.executeInsert("insert into [path] values('uploadfiles/"+filename+"."+ext+"')"); out.println("图片上传成功!"); response.sendRedirect("showimg.jsp"); } } }catch(Exception e){ e.printStackTrace(); } %> </body> </html> </PRE> 本文来自: IT知道网(http://www.itwis.com) 详细出处参考:http://www.itwis.com/html/java/jsp/20080916/2409.html

『陆』 JSP页面使用了enctype="multipart/form-data" 上传文件的问题

s:file控件是个一拖三的玩意,一个file1的控件对应了三个Action类中的属性:file1,file1ContentType和file1FileName。file1的类型是File,它对应的值是文件上传后临时存放的位置,contenttype指文件类型,FileName指文件名称。

批量上传请使用List