24
回答
关于jfinal 上传
【腾讯云】学生服务器套餐10元/月 >>>   
能否给个jfinal上传图片或文件的例子,或者简单介绍一下jfinal的上传方法也行。
举报
小窝他爹
发帖于6年前 24回/27K+阅
共有24个答案 最后回答: 12个月前

JFinal Controller中提供了 getFile(...)与getFiles(...)系列方法,其中参数最全的两个方法如下:

public UploadFile getFile(String parameterName, String saveDirectory, Integer maxPostSize, String encoding)

public List<UploadFile> getFiles(String saveDirectory, Integer maxPostSize, String encoding)

除了以上两个方法以外,其它方法全是使用默认参数对这两个方法的转调,所以会用这两个方法足以。

    parameterName是指在表单中file表单域的名称,saveDirectory是指文件保有存路径,maxPostSize是指文件最大长度,encoding是指文件编码。

    getFile(...)系列方法获取单个文件上传,getFiles(...)获取多文件上传。

    如果需要使用getPara(..)系列方法,则需要先调用getFile或getFiles系列方法之一,因为multipart request的解析是在调用本系列方法时解析的。

    文件上传支持需要cos-26Dec2008.jar这个包,此包在JFinal发行包中有提供。另外还需要在上传表单中设置enctype="multipart/form-data"。

    JFinal文件上传与struts有不同之处,struts是将上传的文件先缓存到临时目录中,然后让开发者处理,通常是将文件移动或copy,而JFinal采用更加高效的方式,可以在上传后直接保存到目标目录下。

     总结JFinal处理文件上传,只需两件事:一是将cos-26Dec2008.jar包引入,二是在Controller中调用getFile或getFiles方法.

--- 共有 7 条评论 ---
sixmonth说得很全面啊,思路很清晰明了 1年前 回复
熊猫你好 回复 @熊猫你好 : 找到了 <!-- https://mvnrepository.com/artifact/com.jfinal/cos --> <dependency> <groupId>com.jfinal</groupId> <artifactId>cos</artifactId> <version>26Dec2008</version> </depende 1年前 回复
熊猫你好 回复 @JFinal : 我就是找不到才问的啊,你可以贴出来吗 1年前 回复
JFinal 回复 @熊猫你好 : 必然会有,在 jfinal 项目中 pom.xml 内容中找一下 1年前 回复
熊猫你好请问cos-26Dec2008.jar这个jar包,在maven仓库里面有吗? 1年前 回复
maxPostSize这个参数为什么设置了不起作用啊~ 默认的是10*1024*1024  设置 为 200*1024*1024然后上传100M的文件 仍然说 Posted content length of 124359085 exceeds limit of 10485760超出限制大小
--- 共有 2 条评论 ---
xcchcaptain请问jetty下如何设置? 4年前 回复
小窝他爹服务器限制吧 6年前 回复

引用来自“JFinal”的答案

上传文件或者图片仅一行代码,在Controller 中使用getFile(...)系列方法即可

可以自定义 上传上去的文件的名字吗, 例如uuid.txt,而不是 test.txt, test1.txt,  test2.txt

String filesystemName = multipartRequest.getFilesystemName(name);

引用来自“一千年前的人”的答案

引用来自“JFinal”的答案

上传文件或者图片仅一行代码,在Controller 中使用getFile(...)系列方法即可

可以自定义 上传上去的文件的名字吗, 例如uuid.txt,而不是 test.txt, test1.txt,  test2.txt

String filesystemName = multipartRequest.getFilesystemName(name);

上传上去的文件名在html 页面中的 <input type="file" name="这里定义"。 JFinal 在后台能获取到,并能能改名 :)

引用来自“JFinal”的答案

引用来自“一千年前的人”的答案

引用来自“JFinal”的答案

上传文件或者图片仅一行代码,在Controller 中使用getFile(...)系列方法即可

可以自定义 上传上去的文件的名字吗, 例如uuid.txt,而不是 test.txt, test1.txt,  test2.txt

String filesystemName = multipartRequest.getFilesystemName(name);

上传上去的文件名在html 页面中的 <input type="file" name="这里定义"。 JFinal 在后台能获取到,并能能改名 :)

UploadFile file = getFile(); 得到文件的时候吗, 文件已经在服务器的硬盘上了。

明白你的意思, rename file....  我还想第一次save就指定名字呢,

 

引用来自“一千年前的人”的答案

引用来自“JFinal”的答案

引用来自“一千年前的人”的答案

引用来自“JFinal”的答案

上传文件或者图片仅一行代码,在Controller 中使用getFile(...)系列方法即可

可以自定义 上传上去的文件的名字吗, 例如uuid.txt,而不是 test.txt, test1.txt,  test2.txt

String filesystemName = multipartRequest.getFilesystemName(name);

上传上去的文件名在html 页面中的 <input type="file" name="这里定义"。 JFinal 在后台能获取到,并能能改名 :)

UploadFile file = getFile(); 得到文件的时候吗, 文件已经在服务器的硬盘上了。

明白你的意思, rename file....  我还想第一次save就指定名字呢,

 

暂时没实现这功能,如果要实现,我打算也是给 UploadFile 加一个方法叫 renameTo(...),这样灵活性更高 :)
如果我要做集群,文件直接存到后端文件系统呢,我还要收工删除硬盘上的文件。struts2上传文件的灵活此时体现出来了。
顶部