angularJS上传文件及表单

angularJS上传文件及表单

<form role="form">
    <div class="form-group">
        <label for="name">名称</label>
        <input type="text" class="form-control" id="name"
               placeholder="请输入名称">
    </div>
    <div class="form-group">
        <label for="file">文件输入</label>
        <input type="file" id="file" class="file">
    </div>
    <button type="submit" class="btn btn-default" ng-click="upload()">提交</button>
</form>

控制器部分获取文件和封装实体

 var form = new FormData();
        var file = angular.element("#file")[0].files[0];//取文件。用angular.element("#file")一定要引入jQuery。
        form.append("fileName",file);
        form.append("user",angular.toJson(user));//toJson将json对象转成字符串,放入实体
        $http.post(url,form,{
            **transformRequest: angular.identity,
            headers:{
                'Content-Type': undefined
            }**
        }).success(function (data) {
            alert("true");
        });

后台控制层代码如下:

 @RequestMapping(value = "/operatorAppList/save.do", method = RequestMethod.POST)
    public String saveUser(HttpServletRequest request,
                                      HttpServletResponse response) throws Exception {
         CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
         MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
 //获取表单数据
            String userStr= multiRequest.getParameter("userInfo");
            User user = (User) JSON.parseObject(userStr, User.class);
 //获取文件
            String saveUrl = "";
            Iterator iter = multiRequest.getFileNames();
            while (iter.hasNext()) {
                String name = (String) iter.next();
                CommonsMultipartFile file = (CommonsMultipartFile) multiRequest.getFile(name);
                if (file != null) {
                    saveUrl = FileUtil.uploadFileToTemp(request, file);//上传到临时目录
                    String fileType = saveUrl.substring(saveUrl.lastIndexOf(".") + 1);
                    String fileName = saveUrl.substring(saveUrl.lastIndexOf('\\') + 1);
                    byte[] documentBytes = new byte[0];
                    try {
                        documentBytes = FileUtil.getBytes(saveUrl);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                   //........保存数据库

                  

                }
            }

        response.getWriter().print(res);
        return null;
    }

FileUtil 文件类

public class FileUtil {
    /**
     * 反斜杠.
     */
    public static final String speratorAnti = "/";

   


    /**
     * 删除文件.
     */
    public static void deleteFile(String strDir) {
        String targetPath = FileUtil.getWebContent() + strDir;
        File file = new File(strDir);
        if (file.exists()) file.delete();
    }

   

    /**
     * 保存文件到temp(临时上传).
     */
    public static String uploadFileToTemp(HttpServletRequest request, CommonsMultipartFile upload) {
        if (!upload.isEmpty()) {
            try {
                // 保存的文件路径(如果用的是Tomcat服务器,文件会上传到/%TOMCAT_HOME%/webapps/YourWebProject/uploadTemp/文件夹中  )
                String filePath = request.getSession().getServletContext()
                        .getRealPath("/") + "uploadTemp/";
                String saveUrl = "uploadTemp/";
                FileItem item = upload.getFileItem();
                String fileName = item.getName();
                filePath += fileName;
                saveUrl += fileName;

                File saveDir = new File(filePath);
                if (!saveDir.getParentFile().exists())
                    saveDir.getParentFile().mkdirs();

                // 转存文件
                upload.transferTo(saveDir);
                return request.getSession().getServletContext()
                        .getRealPath(saveUrl);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
        return null;
    }

    /**
     * 读取磁盘上文件内容,二进制
     */
    public static byte[] getBytes(String filename) throws IOException {
        File f = new File(filename);
        if (!f.exists()) {
            throw new FileNotFoundException(filename);
        }

        ByteArrayOutputStream bos = new ByteArrayOutputStream((int) f.length());
        BufferedInputStream in = null;
        try {
            in = new BufferedInputStream(new FileInputStream(f));
            int buf_size = 1024;
            byte[] buffer = new byte[buf_size];
            int len = 0;
            while (-1 != (len = in.read(buffer, 0, buf_size))) {
                bos.write(buffer, 0, len);
            }
            return bos.toByteArray();
        } catch (IOException e) {
            e.printStackTrace();
            throw e;
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            bos.close();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值