7
回答
JFinal如何自定义上传文件名?
终于搞明白,存储TCO原来是这样算的>>>   

@JFinal 你好,想跟你请教个问题:有时上传的图片名可能是中文的,对编码不友好,希望改成自定义的字母或数字的。

举报
小窝他爹
发帖于5年前 7回/6K+阅
共有7个答案 最后回答: 2年前

直接上代码:

UploadFile uf = getFile();
uf.getFile().renameTo("newFileName.xx");

--- 共有 3 条评论 ---
梦蝶飘雪renameTo(file),参数是file类型的啊,不是字符串 2年前 回复
JFinal回复 @Nodesky : 下一版将在UploadFile 中添加一个更名的方法来实现更名时保持扩展名 :) 5年前 回复
小窝他爹这样重命名的话,不就把文件后缀也改了吗? 不想改图片后缀,jpg,gif还要原来的后缀。 5年前 回复

我是这样处理的

super.getFile("housepic").getFile().renameTo(new File(PathUtil.getWebRootPath()+"/pic/"+System.currentTimeMillis()+".jpg"));
重新取一个名字,保存到自定义的目录下

引用来自“JFinal”的答案

直接上代码:

UploadFile uf = getFile();
uf.getFile().renameTo("newFileName.xx");

xxx.renameTo("xxxx");这里不正确吧。

引用来自“杨文”的答案

引用来自“JFinal”的答案

直接上代码:

UploadFile uf = getFile();
uf.getFile().renameTo("newFileName.xx");

xxx.renameTo("xxxx");这里不正确吧。
仅是个示例,严格来说应该是  uf.getFile().renameTo(new File("newFileName.xx"));
--- 共有 10 条评论 ---
JFinal回复 @dengshizhuo : 使用多个 <input type="file" ... /> 呢? 4年前 回复
dengshizhuo回复 @JFinal : 如果用一个<input=file>可以选择多个文件,使用getFiles方法可以将多个文件上传至服务器,但是通过list就只能取到一个元素,很奇怪 4年前 回复
dengshizhuo回复 @JFinal : 试过了,这样也不行。如果去get(1)的话会提示越界 4年前 回复
JFinal回复 @dengshizhuo : 多写几个 <input type="file" .... /> 4年前 回复
dengshizhuo@dengshizhuo 如果要上传多文件,前台的简单代码应该如何写呢?<input type="file" name="foldername" multiple/> 4年前 回复

引用来自“刘柳”的答案

我是这样处理的

super.getFile("housepic").getFile().renameTo(new File(PathUtil.getWebRootPath()+"/pic/"+System.currentTimeMillis()+".jpg"));
重新取一个名字,保存到自定义的目录下

开发者可以自由进行处理,为了缩短代码量可以做个工具类来做 

@JFinal

上传是出现这样的错误。 另外 控制台输出的信息老是不全 有个什么...more 要怎么让他显示全啊??

[ERROR]-[Thread: 17437726@qtp-25651117-1]-[com.jfinal.core.ActionHandler.handle()]: /manage/system/uploadimg?dir=image
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:61)
	at shwl.admin.ManagerPowerInterceptor.intercept(ManagerPowerInterceptor.java:15)
	at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:51)
	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:75)
	at shwl.handler.ActionExtentionHandler.handle(ActionExtentionHandler.java:14)
	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:65)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:326)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:55)
	... 20 more
Caused by: java.lang.NoClassDefFoundError: com/oreilly/servlet/multipart/FileRenamePolicy
	at com.jfinal.core.Controller.getFiles(Controller.java:626)
	at com.jfinal.core.Controller.getFile(Controller.java:638)
	at shwl.admin.SystemControl.uploadimg(SystemControl.java:252)
	... 25 more
Caused by: java.lang.ClassNotFoundException: com.oreilly.servlet.multipart.FileRenamePolicy
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:401)
	at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:363)
	... 28 more
--- 共有 10 条评论 ---
JFinal回复 @JohnsonZ : 无影响,注意一下路径以及文件名的大小写 5年前 回复
JohnsonZ回复 @JFinal : control 中我是这样写的。 会影响到吗? render("/WEB-INF/web/admin/content/CategoryAdmin.html"); 5年前 回复
JohnsonZ回复 @JFinal : 是的 我是把 webroot 里面的东西全部拷贝到 root目录下的 5年前 回复
JFinal回复 @JohnsonZ : WebRoot 不应该存在 5年前 回复
JohnsonZ回复 @JFinal : 哦是这样。 非常感谢。 我刚刚把网站 放到tomcat的 root目录下后 (就是把WebRoot拷贝到root目录下) 打开地址都是跳转到404页面 不知道什么问题。 之前 都是用jetty在eclipse 中测试的 没问题。想试试 竟然出问题了。 5年前 回复

引用来自“JohnsonZ”的评论

@JFinal

上传是出现这样的错误。 另外 控制台输出的信息老是不全 有个什么...more 要怎么让他显示全啊??

[ERROR]-[Thread: 17437726@qtp-25651117-1]-[com.jfinal.core.ActionHandler.handle()]: /manage/system/uploadimg?dir=image
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:61)
	at shwl.admin.ManagerPowerInterceptor.intercept(ManagerPowerInterceptor.java:15)
	at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:51)
	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:75)
	at shwl.handler.ActionExtentionHandler.handle(ActionExtentionHandler.java:14)
	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:65)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:326)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.jfinal.core.ActionInvocation.invoke(ActionInvocation.java:55)
	... 20 more
Caused by: java.lang.NoClassDefFoundError: com/oreilly/servlet/multipart/FileRenamePolicy
	at com.jfinal.core.Controller.getFiles(Controller.java:626)
	at com.jfinal.core.Controller.getFile(Controller.java:638)
	at shwl.admin.SystemControl.uploadimg(SystemControl.java:252)
	... 25 more
Caused by: java.lang.ClassNotFoundException: com.oreilly.servlet.multipart.FileRenamePolicy
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:401)
	at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:363)
	... 28 more
同问////
顶部