java-file-upload

代码微微有点长,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(“/“); //获取项目根目录