Jfinal 文件上传
JFinal上传文件
uploadify
可以在http://www.uploadify.com/ 下载。
在原项目的基础上。
uploadify
使用:
<input id="file_upload_1" name="file_upload" type="file" multiple="true">
/*
* @param uploader 文件上传方法
* @param onUploadSuccess 上传成功方法 data<String>上传成功后返回JSON数据
*/
$("#file_upload_1").uploadify({
height : 30,
swf : 'js/uploadify/uploadify.swf',
uploader : 'upload/upload',
buttonText : '上传图片',
width : 120,
fileSizeLimit : '500MB',
onUploadSuccess : function(file, data, response) {
var root = $.parseJSON(data);
fileRoot = root.fileRoot;
}
});
more in uploadify
对应的upload方法
首先要导入jar
包,cos-26Dec2008.jar
这是Jfinal
文件上传依赖包。
Maven
地址:
<!-- https://mvnrepository.com/artifact/com.jfinal/cos -->
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>cos</artifactId>
<version>26Dec2008</version>
</dependency>
添加和上面对应的upload
方法。
UploadController
:
package controller;
import java.io.File;
import java.util.List;
import com.jfinal.core.Controller;
import com.jfinal.kit.PathKit;
import com.jfinal.upload.UploadFile;
public class UploadController extends Controller {
/**
* #文件上传大小限制 10 * 1024 * 1024 = 10M
*/
public static final String config_maxPostSize = "10485760";
/**
* 文件上传根路径
*/
public static final String config_fileUploadRoot = "/upload/";
public void upload() {
/**
* 文件上传根路径 :我这里的PathKit.getWebRootPath():G:\eclipse-WorkSpace\JFinal_demo\WebRoot
*/
StringBuilder savePathStr = new StringBuilder(PathKit.getWebRootPath()+config_fileUploadRoot);
File savePath = new File(savePathStr.toString());
if (!savePath.exists()) {
savePath.mkdirs();
}
String fileRoot="";
try{
// 保存文件
List<UploadFile> files = getFiles(savePath.getPath(),Integer.parseInt(config_maxPostSize),"UTF-8");
fileRoot = config_fileUploadRoot+files.get(0).getFileName();
}catch(Exception e){
e.printStackTrace();
}
setAttr("fileRoot", fileRoot);
renderJson();
}
}
上传图片
上传成功
上传成功后会在WebRoot生成一个upload文件。
Tips: 在文件上传表单中如果存在其他请求参数,在后端处理时,要先处理
file
请求,再处理其他请求参数,否则同样获取不到其他参数
兼容性问题
上传插件uploadify
新版本chrome v59
无法正常使用
需要在chrome://settings/content/flash
,设置flash
允许网站使用flash即可。
但是这个也太麻烦了吧!!!
web uploader
我们可以用web uploader
替换之 web uploader