struts2获取文件名|为什么Struts2上传文件之后扩展名变成了tmp如何取得文件正确的扩展名

struts2获取文件名|为什么Struts2上传文件之后扩展名变成了tmp如何取得文件正确的扩展名的第1张示图

❶ struts2上传文件的时候,为什么我获取不到上传文件的名称

检查几个地方:1、上传控件的name和后台对应的属性名是否一致。2、是否加入fileupload拦截器。3、文件是否过大和不符合后缀名。

❷ java的struts2中怎样获取request中的文件与文件中的所有信息

ActionContext.getContext().getSession().get("你要获取的属性名称") ActionContext.getContext().get("你要获取的属性名称")使用上述方法可以获得,下面是辅助说明。在Struts2开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息,甚至需要直接对JavaServlet Http的请求(HttpServletRequest),响应(HttpServletResponse)操作. 我们需要在Action中取得request请求参数"username"的值:[java]ActionContext context = ActionContext.getContext(); Map params = context.getParameters(); String username = (String) params.get("username"); ActionContext context = ActionContext.getContext();Map params = context.getParameters();String username = (String) params.get("username");

❸ 用Struts2做文件上传时,前台js怎样获得文件对象,文件名,文件内容类型(不用Bean的get,set方法)。

出于对用户的安全性考虑,js是无法访问上传文件的完整路径,也就是无法获得file对象,也不能获得文件内容类型fileContentType,但是可以获得文件名(传值或者getElementById,然后对该值进行切割得到文件名和后缀名),故可以获取后缀名,但与文件内容类型fileContentType可能不一致,所以要进行文件的类型,大小等判断,还需要传到后台进行。不过要是图片的话,js是有一个比较bt的做法可以获得大小(类型暂且用后缀名来进行判断,前面也说了获取文件名的方法)的,根据路径new一个Image对象,如var image = new Image(); image.src = url;(url就是文件上传的路径),image.fileSize就是图片的大小

❹ 用Struts2做文件上传时,前台js获得文件对象,文件名,文件内容类型。怎么在action中获得文件对象

从视图层传入action的所有对象都封装在mapper对象中。。。

❺ struts2文件下载出现的问题,不能得到文件名

文件名取的是你filename的值,你需要给filename赋上值,这样下载的文件才能有文件名,在你的execute方法里输出一下filename看有没有给filename赋上值

❻ Javaweb项目中uploadify文件上传Struts2获取不到文件名称怎么解决

$(function(){$("#file_upload").uploadify({'swf':'/uploadify/uploadify.swf','uploader':'/uploadify/uploadify.php','onSelect':function(file){//把这个file.name当做参数传到后台不就是文件的名称varfileName=file.name;//这个就是文件名}});});

❼ 为什么Struts2上传文件之后扩展名变成了tmp,如何取得文件正确的扩展名

在action中获取到上传文件名利用上传文件名来存储就不会出现tmp结尾文件了

❽ struts2上传文件,怎么获取文件的后缀名

private static String getExtention(String fileName) { int pos = fileName.lastIndexOf( "." ); return fileName.substring(pos); } 直接截取就可以内了容

❾ java struts2 怎么获取从jsp传过来的多个file

在action中声明三个变量,然年后生成get、set方法

privateFilefile;privateStringfileFileName;privateStringfileContentType;

注意,这三个变量的名字不能乱写,必须是这个格式的。如果你在表单的名字叫image,那个变量名字就应该是:

privateFileimage;privateStringimageFileName;privateStringimageContentType;

/**************************华丽的分割线**************************************/

第一个就是药品上传的文件的引用,第二个是要上传文件的名字,是三个是要上传文件的类型。

然后就可以通过输出流进行上传了。

❿ 得到file的文件名和存储路径后,在Struts2中的action中要怎样获取file的内容并显示到action转到的jsp页面中

struts2单文件上传:首先是一个文件上传页面,这个比较简单,就是一个表单,里面有个文件上传框<!–在进行文件上传时,表单提交方式一定要是post的方式,因为文件上传时二进制文件可能会很大,还有就是enctype属性,这个属性一定要写成multipart/form-data,不然就会以二进制文本上传到服务器端–><form action="fileUpload.action" method="post" enctype="multipart/form-data"> username: <input type="text" name="username"><br> file: <input type="file" name="file"><br> <input type="submit" value="submit"> </form>接下来是FileUploadAction部分代码,因为struts2对上传和下载都提供了很好的实习机制,所以在action这段我们只需要写很少的代码就行:public class FileUploadAction extends ActionSupport{ private String username;//注意,file并不是指前端jsp上传过来的文件本身,而是文件上传过来存放在临时文件夹下面的文件 private File file; //提交过来的file的名字 private String fileFileName; //提交过来的file的MIME类型 private String fileContentType; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String getFileFileName() { return fileFileName; } public void setFileFileName(String fileFileName) { this.fileFileName = fileFileName; } public String getFileContentType() { return fileContentType; } public void setFileContentType(String fileContentType) { this.fileContentType = fileContentType; } @Override public String execute() throws Exception { String root = ServletActionContext.getServletContext().getRealPath("/upload"); InputStream is = new FileInputStream(file); OutputStream os = new FileOutputStream(new File(root, fileFileName)); System.out.println("fileFileName: " + fileFileName);// 因为file是存放在临时文件夹的文件,我们可以将其文件名和文件路径打印出来,看和之前的fileFileName是否相同 System.out.println("file: " + file.getName()); System.out.println("file: " + file.getPath()); byte[] buffer = new byte[500]; int length = 0; while(-1 != (length = is.read(buffer, 0, buffer.length))) { os.write(buffer); } os.close(); is.close(); return SUCCESS; }}首先我们要清楚一点,这里的file并不是真正指代jsp上传过来的文件,当文件上传过来时,struts2首先会寻找struts.multipart.saveDir(这个是在default.properties里面有)这个name所指定的存放位置,我们可以新建一个struts.properties属性文件来指定这个临时文件存放位置,如果没有指定,那么文件会存放在tomcat的apache-tomcat-7.0.29\work\Catalina\localhost\目录下,然后我们可以指定文件上传后的存放位置,通过输出流将其写到流里面就行了,这时我们就可以在文件夹里看到我们上传的文件了。文件上传后我们还需要将其下载下来,其实struts2的文件下载原理很简单,就是定义一个输入流,然后将文件写到输入流里面就行,关键配置还是在struts.xml这个配置文件里配置:FileDownloadAction代码如下:public class FileDownloadAction extends ActionSupport{public InputStream getDownloadFile(){return ServletActionContext.getServletContext().getResourceAsStream("upload/通讯录2012年9月4日.xls");}@Overridepublic String execute() throws Exception{return SUCCESS;}}我们看,这个action只是定义了一个输入流,然后为其提供getter方法就行,接下来我们看看struts.xml的配置文件:<action name="fileDownload" class="com.xiaoluo.struts2.FileDownloadAction"><result name="success" type="stream"><param name="contentDisposition">attachment;filename="通讯录2012年9月4日.xls"</param><param name="inputName">downloadFile</param></result></action>struts.xml配置文件有几个地方我们要注意,首先是result的类型,以前我们定义一个action,result那里我们基本上都不写type属性,因为其默认是请求转发(dispatcher)的方式,除了这个属性一般还有redirect(重定向)等这些值,在这里因为我们用的是文件下载,所以type一定要定义成stream类型,告诉action这是文件下载的result,result元素里面一般还有param子元素,这个是用来设定文件下载时的参数,inputName这个属性就是得到action中的文件输入流,名字一定要和action中的输入流属性名字相同,然后就是contentDisposition属性,这个属性一般用来指定我们希望通过怎么样的方式来处理下载的文件,如果值是attachment,则会弹出一个下载框,让用户选择是否下载,如果不设定这个值,那么浏览器会首先查看自己能否打开下载的文件,如果能,就会直接打开所下载的文件,(这当然不是我们所需要的),另外一个值就是filename这个就是文件在下载时所提示的文件下载名字。在配置完这些信息后,我们就能过实现文件的下载功能了。struts2多文件上传:其实多文件上传和单文件上传原理一样,单文件上传过去的是单一的File,多文件上传过去的就是一个List<File>集合或者是一个File[]数组,首先我们来看一下前端jsp部分的代码,这里我用到了jquery来实现动态的添加文件下载框以及动态的删除下载框:<script type="text/javascript" src="script/jquery-1.8.1.js"></script><script type="text/javascript">$(function(){$("#button").click(function(){var html = $("<input type='file' name='file'>");var button = $("<input type='button' name='button' value='删除'><br>");$("#body div").append(html).append(button);button.click(function(){html.remove();button.remove();})})})</script></head><body id="body"><form action="fileUpload2.action" method="post" enctype="multipart/form-data">username: <input type="text" name="username"><br>file: <input type="file" name="file"><input type="button" value="添加" id="button"><br><div></div><input type="submit" value="submit"></form></body>file的名字必须都命名成file才行,然后处理多文件上传的action代码如下:public class FileUploadAction2 extends ActionSupport{ private String username;//这里用List来存放上传过来的文件,file同样指的是临时文件夹中的临时文件,而不是真正上传过来的文件 private List<File> file;//这个List存放的是文件的名字,和List<File>中的文件相对应 private List<String> fileFileName; private List<String> fileContentType; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public List<File> getFile() { return file; } public void setFile(List<File> file) { this.file = file; } public List<String> getFileFileName() { return fileFileName; } public void setFileFileName(List<String> fileFileName) { this.fileFileName = fileFileName; } public List<String> getFileContentType() { return fileContentType; } public void setFileContentType(List<String> fileContentType) { this.fileContentType = fileContentType; } @Override public String execute() throws Exception { String root = ServletActionContext.getServletContext().getRealPath("/upload"); for(int i = 0; i < file.size(); i++) { InputStream is = new FileInputStream(file.get(i)); OutputStream os = new FileOutputStream(new File(root, fileFileName.get(i))); byte[] buffer = new byte[500]; @SuppressWarnings("unused") int length = 0; while(-1 != (length = is.read(buffer, 0, buffer.length))) { os.write(buffer); } os.close(); is.close(); } return SUCCESS; }}这样同样将其写到一个输出流里面,这样我们就可以在文件夹里看到上传的多个文件了

未经允许不得转载:山九号 » struts2获取文件名|为什么Struts2上传文件之后扩展名变成了tmp如何取得文件正确的扩展名

赞 (0)