代码微微有点长,java部分就自己犯下的错误记录以下,代码就不贴辣,我放在来我的github上,有需要的可以自己去看看(其实写的炒鸡辣鸡)https://github.com/chenfm-outlook/java-file-upload
前端部分
由于我用的是原生file控件,样式是很丑的,所以我就用大众的方法,将其隐藏掉,通过点击button的方式去触发file。
$scope.submit = function(){
$('#file').trigger('click');
//当按钮点击时,触发file控件的点击事件
}
取消file的确定事件(长得丑就别出来)
$('input[type="file"]').on('change',doUpload);
function doUpload(){
var data = (new FormData($('#form')[0]));
$.ajax({
url:'/AppFileUploadAction/fileUpload.do',
type:'post',
data: new FormData($('#form')),
……
})
}
值得注意的是data属性别忘记加上去,要吃亏的。
data: new FormData($(‘#form’))
最最麻花的东西就要出现辣,恶心辣我一下午。
<form method="post" id="form" enctype="multipart/form-data" style="display: none">
<input type="file" id="file" name="file">
</form>
主要我菜,一开始没加name=”file”这个属性,图片上传功能死活不工作,真的是麻花,换辣N种方法,发现还是不对(内心是痛苦的)
name=”file”
所以说,名字很重要,真TMD的重要。
java部分
为了项目的结构好看,我将图片的路径按当前时间(yy-mm-dd)创建文件夹
File file =new File(path);
if(!file .exists() && !file .isDirectory()){
System.out.println("//不存在");
file .mkdir();
}else{
System.out.println("//目录存在");
}
获取当前项目根目录
String webBase = req.getSession().getServletContext().getRealPath(“/“); //获取项目根目录