上传文件

  首先使用SpringMVC的上传图片功能前 必须要加入必要的jar依赖 还有spring的配置文件里面也要配置一点东西,,

 

   今天我做的图片上传,由于用的不是自己搭的架构,所以报了一个乱七八糟的错,后来上网查到缺少的依赖包,下面这两个包上传文件一定要有的

 

  之后还需要在spring的配置文件中添加以下配置:

    <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8" />
    </bean>


下面是一个普通上传文件的form表单:

          <form action="${ctx }/post/updateLoad" method="post" enctype="multipart/form-data">
              上传图片或文件:<input type="file" name="fileName"/>
                            <input type="submit" value="上传"/> 
          </form>

 

action代码:

    /**
     * 图片上传
     * 
     * @throws IOException
     */
    @RequestMapping(value = "/post/updateLoad", method = RequestMethod.POST)
    public String updateLoad(@RequestParam("fileName") MultipartFile idimg,HttpServletRequest request, ModelMap model) throws IOException {
        String abc = idimg.getOriginalFilename(); //获取上传的文件名字如:123.jpg
        // 判断文件是否为空
        if (!idimg.isEmpty()) {
            try {
                // 文件保存路径 filePath: 服务器路径
//                 String filePath =request.getSession().getServletContext().getRealPath("/") +
//                 idimg.getOriginalFilename();
                
//          也可以获取本电脑系统的临时路径 temporaryPath的值为:C:\Users\admin\AppData\Local\Temp\
//    String temporaryPath= System.getProperty("java.io.tmpdir");
// 本地路径 String path = "C:\\postImage\\" + "cover\\"; boolean flag = makeDirs(path); // 转存文件 idimg.transferTo(new File(path + idimg.getOriginalFilename())); } catch (Exception e) { e.printStackTrace(); } } return "addPost"; } //创建文件夹 public static boolean makeDirs(String filePath) { if (filePath == null || filePath.isEmpty()) { return false; } File folder = new File(filePath); boolean flag=folder.mkdirs(); return flag; }

 

 

实现多文件上传:

@DataSource(name = DataSource.master)
    @ResponseBody
    @RequestMapping("/upload")
    public APIResult addUser(@RequestParam("fileName") CommonsMultipartFile[] files,@RequestParam("userId") Long userId,HttpServletRequest request) {

        for (int i = 0; i < files.length; i++) {
            System.out.println("fileName---------->" + files[i].getOriginalFilename());

            if (!files[i].isEmpty()) {
                int pre = (int) System.currentTimeMillis();
                try {
                    // 拿到输出流,同时重命名上传的文件
                    FileOutputStream os = new FileOutputStream(
                            "H:/" + new Date().getTime() + files[i].getOriginalFilename());
                    // 拿到上传文件的输入流
                    FileInputStream in = (FileInputStream) files[i].getInputStream();

                    // 以写字节的方式写文件
                    int b = 0;
                    while ((b = in.read()) != -1) {
                        os.write(b);
                    }
                    os.flush();
                    os.close();
                    in.close();
                    int finaltime = (int) System.currentTimeMillis();
                    System.out.println(finaltime - pre);

                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("上传出错");
                }
            }
        }
        return null;
    } 

 

posted @ 2015-08-13 18:01  Smile_灰太狼  阅读(227)  评论(0)    收藏  举报