zoukankan      html  css  js  c++  java
  • Getting Started: Serving Web Content

    【转载】http://blog.csdn.net/coding13/article/details/54577076

    一下代码为自己改进的代码

    1、工程结构图

    2、pom.xml文件依赖项


    4.0.0

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    
    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>1.5.9.RELEASE</version>
    	<relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <properties>
    	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    	<java.version>1.8</java.version>
    </properties>
    
    <dependencies>
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-test</artifactId>
    		<scope>test</scope>
    	</dependency>
    	
    	   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>
    </dependencies>
    
    <build>
    	<plugins>
    		<plugin>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-maven-plugin</artifactId>
    		</plugin>
    	</plugins>
    </build>
    

    3、Application.java

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    @SpringBootApplication
    public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
    

    }

    4、FileController.java

    package com.example.demo;

    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.MultipartHttpServletRequest;

    import ch.qos.logback.core.net.SyslogConstants;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    import java.util.List;

    @Controller
    public class FileController {
    @RequestMapping("/greeting")
    public String greeting(@RequestParam(value="name", required=false, defaultValue="feng") String name, Model model) {
    model.addAttribute("name", name);
    return "greeting";
    }
    private static final Logger logger = LoggerFactory.getLogger(FileController.class);
    //文件上传相关代码
    @RequestMapping(value = "upload")
    @ResponseBody
    public String upload(@RequestParam("test") MultipartFile file) {
    if (file.isEmpty()) {
    return "文件为空";
    }
    // 获取文件名
    String fileName = file.getOriginalFilename();
    logger.info("上传的文件名为:" + fileName);
    // 获取文件的后缀名
    String suffixName = fileName.substring(fileName.lastIndexOf("."));
    logger.info("上传的后缀名为:" + suffixName);
    // 文件上传后的路径
    String filePath = "E://test//";//服务器路径
    // 解决中文问题,liunx下中文路径,图片显示问题
    // fileName = UUID.randomUUID() + suffixName;
    File dest = new File(filePath + fileName);
    // 检测是否存在目录
    if (!dest.getParentFile().exists()) {
    dest.getParentFile().mkdirs();
    }
    try {
    file.transferTo(dest);
    return "上传成功";
    } catch (IllegalStateException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return "上传失败";
    }

    //文件下载相关代码
    @RequestMapping("/download")
    @ResponseBody
    public String downloadFile(HttpServletRequest request, HttpServletResponse response){
        String fileName = "index.html";
    

    // String fileName = request.getParameter("name");
    if (fileName != null) {
    //当前是从该工程的WEB-INF//File//下获取文件(该目录可以在下面一行代码配置)然后下载到C:usersdownloads即本机的默认下载的目录
    // String realPath = request.getServletContext().getRealPath( "download");
    //绝对路径可行,不知道上一行的相对路径怎么设置。
    String realPath = "D:SpringToolWorkspacedemosrcmain esourcesdownload";
    File file = new File(realPath, fileName);
    if (file.exists()) {
    response.setContentType("application/force-download");// 设置强制下载不打开
    response.addHeader("Content-Disposition",
    "attachment;fileName=" + fileName);// 设置文件名
    byte[] buffer = new byte[1024];
    FileInputStream fis = null;
    BufferedInputStream bis = null;
    try {
    fis = new FileInputStream(file);
    bis = new BufferedInputStream(fis);
    // OutputStream os = response.getOutputStream();
    String pathname = "e://download//filetest//"; //下载到自己设置的对应路径,默认是浏览器下载的路径

                    File FilePath = new File(pathname);
                    FilePath.mkdirs();
                    File file2 = new File(FilePath,"file7.txt");
                    
                    file2.createNewFile();
                    OutputStream os = new FileOutputStream(file2);
                    
                    int i = bis.read(buffer);
                    while (i != -1) {
                        os.write(buffer, 0, i);
                        
                        i = bis.read(buffer);
                    }
                    
                    System.out.println("success");
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (bis != null) {
                        try {
                            bis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if (fis != null) {
                        try {
                            fis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
                return "下载成功";
            }
          
        }
        return "文件不存在";
    }
    

    /* //文件下载相关代码
    @RequestMapping("/download")
    public ResponseEntity<Byte[]> download(@RequestParam("name") String name) throws IOException{
    String path =
    return null;

    }*/
    //多文件上传
    @RequestMapping(value = "/batch/upload", method = RequestMethod.POST)
    @ResponseBody
    public String handleFileUpload(HttpServletRequest request) {
        List<MultipartFile> files = ((MultipartHttpServletRequest) request)
                .getFiles("file");
        MultipartFile file = null;
        BufferedOutputStream stream = null;
        for (int i = 0; i < files.size(); ++i) {
            file = files.get(i);
            if (!file.isEmpty()) {
                try {
                    byte[] bytes = file.getBytes();
                    File filePath2 = new File("e:"+File.separator+"test");   //上传到指定目录,若不指定默认上传到工程的根目录
                    filePath2.mkdirs();
                    File fileoutPutStream= new File(filePath2,file.getOriginalFilename());
                    stream = new BufferedOutputStream(new FileOutputStream(
                            fileoutPutStream));
                    stream.write(bytes);
                    stream.close();
    
                } catch (Exception e) {
                    stream = null;
                    return "You failed to upload " + i + " => "
                            + e.getMessage();
                }
            } else {
                return "You failed to upload " + i
                        + " because the file was empty.";
            }
        }
        return "upload successful";
    }
    

    }

    5、index.html

    Getting Started: Serving Web Content

    Get your greeting here

    文件:
    下载test

    多文件上传

    文件1:

    文件2:

  • 相关阅读:
    4 Python+Selenium的元素定位方法(link/partial link)
    3 Python+Selenium的元素定位方法(id、class name、name、tag name)
    2 Selenium3.0+Python3.6环境搭建
    1 Selenium打开浏览器
    目录处理文件&链接命令
    DOS批处理命令-@命令
    DOS批处理命令-echo
    吐槽一二三
    编码神器之sublime(插件安装)
    两天来学习C的感受
  • 原文地址:https://www.cnblogs.com/Andrew520/p/8185558.html
Copyright © 2011-2022 走看看