精华内容
下载资源
问答
  • java文件上传
    千次阅读
    2022-05-13 15:50:41

    tomcat服务器中文件上传遇到报错提示上传错误,可以尝试的解决方法如下:
    1、把项目接收的文件大小限制上线设置大一些:

    #设置上传请求的大小为1G
    spring.servlet.multipart.max-request-size=1024MB
    #设置上传文件的最大为1G
    spring.servlet.multipart.max-file-size=1024MB
    #不限制tomcat的接收的报文体大小
    server.tomcat.max-http-form-post-size=-1
    

    若以上配置之后仍无法解决上传提示错误信息可以更改下tomcat配置文件的值server.xml

    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" 
        maxPostSize="-1" maxHttpHeaderSize="16384"/>
    

    maxPostSize 设置为-1代表不限制上传的文件大小,也可以以设置为0,具体设置的值需要根据tomcat版本区分,查看tomcat版本的命令为在bin目录下执行:

    sh version.sh
    

    maxHttpHeaderSize 设置请求头4K即可!

    更多相关内容
  • NULL 博文链接:https://fanshuyao.iteye.com/blog/2431007
  • 一个代码完整的Java文件上传类,可保存生成缩略图,可编译成class文件供JSP/Servlet调用,应用BufferedInputStream、BufferedOutputStream、FileOutputStream、SimpleDateFormat等类实现文件上传,获得当前的文件...
  • 主要介绍了java实现上传文件类型检测过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 利用java图形化界面和网络编程相结合实现的--文件上传。 运行步骤: (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 ...
  • java Swing 文件批量上传 DEMO 源代码 供学习用 ,主要有两个界面和功能,用户登录界面,选择文件夹或者文件 上传界面
  • java上传文件到服务器

    2018-12-11 06:04:02
    java上传文件到服务器,将本地的文件上传到服务器上去 java上传文件到服务器,将本地的文件上传到服务器上去
  • Java文件上传jar包加实现步骤.zipJava文件上传jar包加实现步骤.zipJava文件上传jar包加实现步骤.zipJava文件上传jar包加实现步骤.zipJava文件上传jar包加实现步骤.zipJava文件上传jar包加实现步骤.zipJava文件上传...
  • 主要介绍了Java上传文件进度条的实现方法,可简单实现显示文件上传比特数及进度的功能,并附带demo源码供读者下载参考,需要的朋友可以参考下
  • java 文件上传工具类 文件及文本数据java 文件上传工具类 文件及文本数据java 文件上传工具类 文件及文本数据
  • Java文件上传实例并解决跨域问题

    万次阅读 多人点赞 2021-09-03 20:06:44
    本文内容为Java文件上传实例并解决跨域问题,其中重点讲解了文件上传,MultipartFile接口的使用,配置nginx,以及解决文件上传跨域的问题

    Java文件上传实例并解决跨域问题

    目录

    了解MultipartFile接口

    文件上传业务代码

    Controller类

    Service类:写了具体的业务逻辑

    修改nginx配置,将文件存储到文件服务器中

    每次上传文件都会经过网关,必然会给网关带来很大的压力,那我们如何绕过网关呢?

    1.在网关中配置白名单 ,这样也会走网关,只是压力少了一点点

    2.在nginx做转发,当请求文件上传时,直接转到相应的服务

    解决上传文件出现跨域问题

    写配置类CorsFilter

    在nginx配置中配置请求实体大小


    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传功能的实现。

    了解MultipartFile接口

    我们实现文件的上传用到了Spring-web框架中的 MultipartFile接口,MultipartFile接口的源码注释中说“MultipartFile接口是  在大部分请求中接收的上载文件的表示形式。”

    A representation of an uploaded file received in a multipart request.
    The file contents are either stored in memory or temporarily on disk. In either case, the user is responsible for copying file contents to a session-level or persistent store as and if desired. The temporary storage will be cleared at the end of request processing.

    常用方法如下表

    Method Summary
     byte[]获取文件的字节数组getBytes()
              Return the contents of the file as an array of bytes.
     String获取文件的类型getContentType()
              Return the content type of the file.
     InputStream获取文件的输入流getInputStream()
              Return an InputStream to read the contents of the file from.
     String获取文件名getName()
              Return the name of the parameter in the multipart form.
     String获取原始文件名(防止篡改文件类型)getOriginalFilename()
              Return the original filename in the client's filesystem.
     long获取文件的大小,以字节的形式)getSize()
              Return the size of the file in bytes.
     boolean判断文件是否为空isEmpty()
              Return whether the uploaded file is empty, that is, either no file has been chosen in the multipart form or the chosen file has no content.
     void将接收到的文件传输到给定的目标文件。transferTo(File dest)
              Transfer the received file to the given destination file.

    文件上传业务代码

    Controller类

    /**
     * @Author: 小小张自由
     * @Date: 2021/7/6 - 20:56
     * @Description: 文件上传
     * @version: 1.0
     */
    @Controller
    @RequestMapping("upload")
    public class UploadController {
    
        @Autowired
        private UploadService uploadService;
    
        @PostMapping("image")
        public ResponseEntity<String> uploadImage(@RequestParam("file") MultipartFile file){
           String url= this.uploadService.uploadImage(file);
           if (StringUtils.isBlank(url)){
               return ResponseEntity.badRequest().build();
           }
            return ResponseEntity.status(HttpStatus.CREATED).body(url);
        }
    }
    

    Service类:写了具体的业务逻辑

    /**
     * @Author: 小小张自由
     * @Date: 2021/7/6 - 21:01
     * @Description: 文件上传
     * @version: 1.0
     */
    @Service
    public class UploadService {
    
        //用于判断文件的类型,暂时只判断了“image/gif","image/jpeg”
        private static final List<String> CONTENT_TYPES= Arrays.asList("image/gif","image/jpeg");
    
        private static final Logger LOGGER= LoggerFactory.getLogger(UploadService.class);
    
        /**
         * 业务逻辑代码
         * @param file 文件的存储的url
         * @return
         */
        public String uploadImage(MultipartFile file) {
    
            String originalFilename = file.getOriginalFilename();
            //校验文件类型
            //方法一:截取字符串
            String afterLast = StringUtils.substringAfterLast(".", originalFilename);
            //方法二:使用getContentType方法
            String contentType = file.getContentType();
            if (!CONTENT_TYPES.contains(contentType)){
                LOGGER.info("文件类型不合法:"+originalFilename);
                return null;
            }
            //校验文件内容
            try {
                //获取文件流
                BufferedImage bufferedImage = ImageIO.read(file.getInputStream());
                if (bufferedImage==null){
                    LOGGER.info("文件内容不合法:{}",originalFilename);
                    return null;
                }
                //保存到服务器   E:\Leyou\image
                //将接收到的文件传输到给定的目标文件。
                file.transferTo(new File("E:\\Leyou\\Image\\"+originalFilename));
                
                //返回URL,进行回显
                //可以使用Nginx-图片服务器
                return "http://image.leyou.com/"+originalFilename;
            } catch (Exception e) {
                LOGGER.info("服务器内部错误:"+originalFilename);
                e.printStackTrace();
            }
            return null;
        }
    }

    修改nginx配置,将文件存储到文件服务器中

    修改Nginx的配置文件nginx.conf,监听80端口,设置root的值为:E盘

    - 图片不能保存在服务器内部,这样会对服务器产生额外的加载负担
    - 一般静态资源都应该使用独立域名,这样访问静态资源时不会携带一些不必要的cookie,减小请求的数据量

    server {
            listen       80;
            server_name  image.leyou.com;
    
            proxy_set_header X-Forwarded-Host $host;
    		proxy_set_header X-Forwarded-Server $host;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		
    		location / {
    			root E:\\Leyou\\image;
    		}
        }

    每次上传文件都会经过网关,必然会给网关带来很大的压力,那我们如何绕过网关呢?

    1.在网关中配置白名单 ,这样也会走网关,只是压力少了一点点

    @Slf4j
    public class AuthorizeFilter implements GlobalFilter, Ordered {
    
        //白名单:存放放行的URL
        private List<String> allowPaths;
    
    
        @Override
        public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
           
            //获取请求的url路径
            String path = request.getURI().getPath();
            boolean flag=isAllowPath(path);
            if (flag) {
                log.info("请求在白名单中,leyou.filter: {}",path);
                //放行
                return chain.filter(exchange);
            } else {
              //写其他的业务逻辑
                ~~~~
                
            }
        }
    
        private boolean isAllowPath(String path) {
         
              //判断是否允许放行
             if (allowPaths.contains(path)){
                 return true;
             }
             return  false;
    
      }

    2.在nginx做转发,当请求文件上传时,直接转到相应的服务

    本实例使用了方法二、需要增加配置

    	server {
            listen       80;
            server_name  api.leyou.com;
    
            proxy_set_header X-Forwarded-Host $host;
    		proxy_set_header X-Forwarded-Server $host;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		# 新增加的配置,用于文件上传
    		location /api/upload {
    			proxy_pass http://127.0.0.1:8082;
    			proxy_connect_timeout 600;
    			proxy_read_timeout 600;
    			
    			rewrite "^/api/(.*)$" /$1 break;
    		}
    		# 网关的配置
    		location / {
    			proxy_pass http://127.0.0.1:10010;
    			proxy_connect_timeout 600;
    			proxy_read_timeout 600;
    		}
        }

    当这样配置之后,文件上传就不会过网关,减少了网关的压力。但是有引来了一个新问题那就是跨域。

    解决上传文件出现跨域问题

    由于Nginx将文件上传的请求直接转发到了具体服务中,不再走gateway,所以gateway中的跨域配置,不再生效了。 需要在文件上传这个服务中单独配置跨域。

    写配置类CorsFilter

    /**
     * @Author: 小小张自由
     * @Date: 2021/6/15 - 11:12
     * @Description: 解决 跨域问题
     * @version: 1.0
     */
    @Configuration
    public class LeyouCorsConfiguration {
    
        @Bean
        public CorsFilter corsFilter(){
            //初始化配置对象
            CorsConfiguration configuration = new CorsConfiguration();
            //允许跨域访问的域名
            configuration.addAllowedOrigin("*");
           // configuration.setAllowCredentials(true);  //运行携带cookie
            configuration.addAllowedMethod("*"); //代表所有请求方法
            configuration.addAllowedHeader("*"); //允许携带任何头信息
    
            //初始化cors配置源对象
            UrlBasedCorsConfigurationSource configurationSource=new UrlBasedCorsConfigurationSource();
            configurationSource.registerCorsConfiguration("/**",configuration);
    
            //返回CorSfilter实例,参数
            return new CorsFilter(configurationSource);
        }
    
    }

    到此应该就可以上传了,但是还是报跨域,我已经配置好了啊,为什么还是报跨域呢?

    在nginx配置中配置请求实体大小

    我就想是不是Nginx的问题,然后我就一行一行的读配置,最后发现

    nginx配置中没有配置请求实体大小

    image.png

    加上这行配置就好了

    client_max_body_size 1024m;

    如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。 

    展开全文
  • Java 文件上传与下载

    万次阅读 2021-06-06 19:29:35
    MultipartFile 这个类一般是用来接受前台传过来的文件 Part能获取所有的请求参数的参数名,而Parameter只能获取非文件...Part能获得上传文件文件大小、文件类型 HttpServletRequest request @RequestPart .........

    Ⅰ、文件上传

    一、form-data 类型

    form-data 类型即常用的表单提交

    两种处理参数的方式

    • MultipartFile 类接受前台传过来的文件
    • part 接收字节流

    @RequestPart 作用类似 @RequestParam

    1、postMan 请求

    在这里插入图片描述

    2、文件上传接口

    直接上代码

    @RestController
    public class TestFile {
        private BufferedOutputStream bufferedOutputStream = null;
    
        @RequestMapping(value = "/upload", method = RequestMethod.POST)
        @ResponseBody
        public String readFile(HttpServletRequest request, @RequestParam("name") String name, @RequestPart("file1") MultipartFile file3,@RequestPart("photo") MultipartFile photo) throws IOException, ServletException {
           
            String path= "I:\\spring\\spring-mybatis-plus\\src\\main\\resources\\public\\static\\";
    
            System.out.println(name);
            /*
            第一种 : 使用 MultipartFile 封装好的 transferTo() 方法保存文件
            photo.transferTo(new File(path+photo.getOriginalFilename()));
    
            第二种 :  使用 MultipartFile 字节流保存文件
             fileUtil(file3, String.valueOf(path));
    
    		第三种 :  使用 Part 接收文件字节流
            Part file2 = request.getPart("file2");
            file2.write(path + file2.getSubmittedFileName());
            */
    		// request.getParts() 获取的是全部参数(name,age,file1,file2),包括文件参数和非文件参数
            for (Part part : request.getParts()) {
                // 获取文件类型
               part.getContentType();
                // 获取文件大小
               part.getSize();
                // 获取文件名
               part.getSubmittedFileName();
               // 获取参数名 (name,age,file1,file2)
               part.getName()
                if(part.getContentType()!=null){
                    part.write(path + part.getSubmittedFileName());
                }else{
    				 // 可以获取文本参数值,文本参数 part.getContentType() 为 null
              		 request.getParameter(part.getName())
    			}
            }
            return "success";
        }
    
        public String fileUtil(MultipartFile file, String path) {
    
            if (!file.isEmpty()) {
                try {
                    byte[] bytes = file.getBytes();
                    bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(
                            new File(path + file.getOriginalFilename())));
                    bufferedOutputStream.write(bytes);
                    bufferedOutputStream.close();
                    return file.getOriginalFilename() + "success upload";
                } catch (Exception e) {
                    return file.getOriginalFilename() + "failed to upload ---> " + e;
                }
            } else {
                return file.getOriginalFilename() + "You failed to upload file was empty.";
            }
        }
    }
    
    

    实际开发中,上面有很多需要优化的地方,比如写出文件工具类,获取项目路径(注意测试和打包上线路径),三种方法使用一种即可,流参数输出之后,就获取不到,不像其他参数可以在该请求的任意位置获取

    如果一个输入框多个文件,可以使用

    List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("");
    // 也可以使用 part.getName() 获取参数名做判断
    part.getName()
    

    或者 MultipartFile[] file3

        public String readFile(HttpServletRequest request, @RequestParam("name") String name, @RequestPart("file1") MultipartFile[] file3) 
    
    3、 测试

    在这里插入图片描述

    二、binary 类型

    binary 这一类型,指的就是一些二进制文件类型,如application/pdf,指定了特定二进制文件的MIME类型。就像对于text文件类型若没有特定的子类型(subtype),就使用 text/plain。类似的,二进制文件没有特定或已知的 subtype,即使用 application/octet-stream,这是应用程序文件的默认值。

    对于application/octet-stream,只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)。

    1、postMan 请求

    在这里插入图片描述

    2、文件上传接口

    就是简单的文件读写,其中细节可以根据需求自行添加

    @RequestMapping(value = "/upload2",method = RequestMethod.POST)
        public String upload2(HttpServletRequest request) throws IOException {
            ServletInputStream inputStream = null;
            FileOutputStream fileOutputStream = null;
            try {
                inputStream = request.getInputStream();
    
                fileOutputStream = new FileOutputStream(new File("I:\\spring\\spring-mybatis-plus\\src\\main\\resources\\public\\static\\微信图片_20210729130156.jpg"));
    
                int len;
                byte[] bytes = new byte[1024];
                while((len = inputStream.read(bytes))!=-1){
                    fileOutputStream.write(bytes,0,len);
                }
            } catch (IOException e) {
                e.printStackTrace();
                return "上传失败";
            }
            finally {
                if(fileOutputStream!=null){
                    fileOutputStream.close();
                }
                if(inputStream!=null){
                    inputStream.close();
                }
            }
            return "上传成功";
        }
    
    3、测试

    上传成功
    在这里插入图片描述

    三、springboot 配置

    如果不配置,可能上传文件过大会报错,默认上传文件小于 1MB

    如果是 springboot 项目,可以通过配置文件限制文件上传大小

    文件上传配置类 MultipartAutoConfiguration
    在这里插入图片描述
    MultipartProperties 默认参数,可以看到默认开启,单个文件最大 1MB,单个请求最大 10MB
    在这里插入图片描述
    application.yml 上传文件配置

    spring:
      servlet:
        multipart:
          max-file-size: 10MB # 单个文件最大 10MB
          maxRequestSize: 100MB # 单个请求最大 100 MB
    
    四、总结

    part 使用起来比较方便,接受的就是字节流,读取文件类型,文件名,文件大小也比较方便,不清楚 getParameter() 和 getPart() 区别 的可以看我另一篇博客
    https://blog.csdn.net/qq_41538097/article/details/117637372

    Ⅱ、文件下载

    一、下载本地资源

    Content-Disposition 详细说明:参考https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition
    Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。
    response.setHeader("Content-Disposition", "attachment;fileName=test.txt" ;
    意味着消息体应该被下载到本地;大多数浏览器会呈现一个“保存为”的对话框,将 filename 的值预填为下载后的文件名,假如它存在的话(fileName 或者 filename 都可以使用)
    response.setHeader(“Content-Disposition”, “inline; filename=test.jpg” );设置为在线打开

    public class FileDownload {
        @RequestMapping("/download")
        public void download(String fileName, HttpServletResponse response,boolean isOnLine) throws IOException {
        // 路径可以指定当前项目相对路径
            File file = new File("C:\\Users\\Administrator\\Pictures\\小程序\\" + fileName);
            if (file.exists()) {
                FileInputStream fileInputStream = new FileInputStream(file);
                ServletOutputStream outputStream = response.getOutputStream();
                if(!isOnLine){
                    response.setContentType("application/octet-stream");
                    // 如果文件名为中文需要设置编码
                    response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("test.jpg", "utf8"));
                }
                byte[] bytes = new byte[1024];
                int len;
                while ((len = fileInputStream.read(bytes)) != -1) {
                    outputStream.write(bytes, 0, len);
                }
            }
        }
    }
    

    测试下载:
    接口:http://localhost:8081/download?fileName=test.jpg

    不同的浏览器弹出的操作可能不同

    chrome浏览器
    在这里插入图片描述
    IE浏览器
    在这里插入图片描述
    都可以下载成功
    在这里插入图片描述
    测试在线打开
    http://localhost:8081/download?fileName=test.jpg&isOnLine=false
    在这里插入图片描述
    如果不指定下载,则默认是在线打开(谷歌浏览器)或者使用 response.setHeader(“Content-Disposition”, “inline; filename=test.jpg” );设置为在线打开

    二、下载网络资源

    到网易云音乐找个歌曲
    在这里插入图片描述

        @RequestMapping("/downLoadMusic")
        public void downloadNetworkFile(HttpServletResponse response) throws IOException {
            URL url = new URL("https://m701.music.126.net/20210808175335/c2ed0b504dd7bf3f86ac67a40fd092d2/jdyyaac/565b/065f/0358/a1cd0e25a815dffcc0c1422398efde9e.m4a");
            URLConnection urlConnection = url.openConnection();
            InputStream inputStream = urlConnection.getInputStream();
            ServletOutputStream outputStream = response.getOutputStream();
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("起风了.m4a", "utf8"));
            byte[] bytes = new byte[1024];
            int len;
            while ((len = inputStream.read(bytes)) != -1) {
                outputStream.write(bytes, 0, len);
            }
            outputStream.close();
            inputStream.close();
        }
    

    chrome测试
    在这里插入图片描述
    IE测试
    在这里插入图片描述

    下载成功
    在这里插入图片描述
    注意:下面的情况针对静态资源在 resources 目录下,运行找不到资源的原因以及解决办法
    首先,开发环境使用绝对路径肯定是不会错的,但部署运行环境就需要考虑路径问题,下面解决这个问题
    对于 springboot 项目打成 jar 包,在 window/linux 系统使用 java -jar 运行时,需要考虑路径问题,因为是运行未解压 jar 包,如果直接指定 resources 目录下文件也运行是找不到的,此时必须使用输入流才可以 InputStream resourceAsStream = FileDownload.class.getClassLoader().getResourceAsStream("static/0.jpg"); 亲测对于 window/Linux 都有效
    更多文件下载可参考 https://www.jb51.net/article/203861.htm

    展开全文
  • (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 (2)单击“上传服务器”窗口中的“启动服务..”按钮。 (3)单击“上传...
  • JAVA文件上传遍一直是一个比较关注的问题,用的最多的算是三个(我就知道这三个)比较强的,一个是比较早的jspsmartupload,另一个是出身名族的commonupload,还有一个就是orellay的了.
  • Java 文件上传 三种方式

    千次阅读 2022-03-26 16:50:38
    一:配置springBoot上传文件限制 spring: servlet: multipart: max-file-size: 100MB #单个文件大小 max-request-size: 1024MB #总文件大小 二:代码 import org.springframework.web.bind.annotation.*; ...

    一:配置springBoot上传文件限制

    spring:
      servlet:
        multipart:
          max-file-size: 100MB  #单个文件大小
          max-request-size: 1024MB #总文件大小
    

    二:代码

    import org.springframework.web.bind.annotation.*;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
    
    import javax.servlet.http.HttpServletRequest;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Base64;
    import java.util.Locale;
    import java.util.UUID;
    
    @RestController
    @RequestMapping("upload")
    public class UploadController {
    
        /**
         * 上传方式一,从请求体中获取文件信息
         * @param request
         * @return
         * @throws IOException
         */
        @PostMapping("method1")
        public String upload1(HttpServletRequest request) throws IOException {
    
            MultipartFile file = ((StandardMultipartHttpServletRequest) request).getFile("file");
            String fileName = file.getOriginalFilename();
            String newName=UUID.randomUUID().toString()+fileName.substring(fileName.indexOf("."));
    
            // 获取当前操作系统
            String osName = System.getProperties().get("os.name").toString().toLowerCase(Locale.ROOT);
            String path="";
    
            if(osName.startsWith("win")){
                path="D:\\Test\\";
            }else{
                path="/mnt/test";
            }
            File saveFile=new File(path+newName);
            if(!saveFile.getParentFile().exists()){
                saveFile.getParentFile().mkdirs();
            }
            file.transferTo(saveFile);
            return saveFile.getPath();
        }
    
        /**
         * 上传方式2 MultipartFile 上传
         * @param file
         * @return
         * @throws IOException
         */
        @PostMapping("method2")
        public String upload2(@RequestParam("file") MultipartFile file) throws IOException {
            String fileName = file.getOriginalFilename();
            String newName=UUID.randomUUID().toString()+fileName.substring(fileName.indexOf("."));
            // 获取当前操作系统
            String osName = System.getProperties().get("os.name").toString().toLowerCase(Locale.ROOT);
            String path="";
    
            if(osName.startsWith("win")){
                path="D:\\Test\\";
            }else{
                path="/mnt/test";
            }
            File saveFile=new File(path+newName);
            if(!saveFile.getParentFile().exists()){
                saveFile.getParentFile().mkdirs();
            }
            file.transferTo(saveFile);
            return saveFile.getPath();
        }
    
        /**
         * base64 图片上传
         * @param base64
         * @return
         */
        @PostMapping("method3")
        public String upload3(@RequestParam("base64")String base64){
            String base64Data = base64.split(",")[1];
            Base64.Decoder decoder = Base64.getDecoder();
            byte[] bytes = decoder.decode(base64Data);
            // 获取当前操作系统
            String osName = System.getProperties().get("os.name").toString().toLowerCase(Locale.ROOT);
            String path="";
    
            if(osName.startsWith("win")){
                path="D:\\Test\\";
            }else{
                path="/mnt/test";
            }
            String newName=UUID.randomUUID().toString()+".png";
            File saveFile=new File(path+newName);
            if(!saveFile.getParentFile().exists()){
                saveFile.getParentFile().mkdirs();
            }
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(saveFile);
                fos.write(bytes);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (fos != null) {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return saveFile.getPath();
        }
    
        public static void main(String[] args) {
            String data = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAFJklEQVR4Xu3VsRGAQAwEsaf/oqEBINj0RO7A8u9w3efcx0eAwKvAJRAvg8C3gEC8DgI/AgLxPAgIxBsg0AT8QZqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIwAOn4Y9IyHT+ZAAAAABJRU5ErkJggg==";
        }
    }
    
    展开全文
  • java上传本地文件到oss指定目录,包含具体怎么使用,只需要改变一下配置文件就可以使用,如有疑问联系我QQ1058070168
  • java文件上传demo.rar

    2019-12-11 18:34:45
    java文件上传demo.rarjava文件上传demo.rarjava文件上传demo.rarjava文件上传demo.rarjava文件上传demo.rarjava文件上传demo.rarjava文件上传demo.rar
  • 本文实例讲述了Java文件上传与文件下载实现方法。分享给大家供大家参考,具体如下:Java文件上传数据上传是客户端向服务器端上传数据,客户端向服务器发送的所有请求都属于数据上传。文件上传是数据上传的一种特例,...
  • JAVA文件上传大小限制问题

    千次阅读 2022-02-24 15:14:10
    解决的办法:修改tomcat的配置文件#{path}/...(2)利用nginx做服务转发,client_max_body_size这个参数限制了上传文件的大小,默认是1M 解决的办法: location / { client_max_body_size 100m; } 重启服务 ...
  • 主要为大家详细介绍了Java原生服务器接收上传文件,不使用MultipartFile类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • java调用需要上传文件的接口源码,其中含调用案例,调用工具,下载下来即可使用
  • java文件上传下载工具

    2018-09-21 11:19:25
    java文件上传下载工具,支持上传下载,目录创建,文件复制,文件删除
  • 该代码是一个使用Java开发的上传下载的一个demo,一共有两种方法,第一种是使用最基础的IO流进行文件上传,可以了解一下原理。第二种是使用apache的commons-IO包进行文件上传,其实只要了解了这两种上传文件的...
  • 文件上传下载需要的jar包 java文件上传下载 源码 http://blog.csdn.net/da_zhuang/article/details/8737618
  • java实现excel文件上传

    2017-09-27 14:44:16
    excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)! excel文件上传(代码)!
  • JAVA文件上传原理源代码

    热门讨论 2011-06-16 22:59:30
    java代码,演示上传文件,适合任何文件,主要是了解HTTP请求的信息,然后解析请求的字符串,此事例只考虑了现在的两种主要的浏览器的请求,因为浏览器不一样文件名会有差异,IE就只有文件名,而FF就是全路径名
  • Java 文件上传同时携带参数

    千次阅读 2021-07-23 16:25:07
    文件上传同时携带参数 单独进行文件上传的方式常用MultipartFile,但并不能携带其它参数: 使用MultipartHttpServletRequest可将文件、参数以键值形式包装起来,传送至controller。 例: 接口: @RequestMapping...
  • Java文件上传【通用】

    千次阅读 2020-12-13 11:51:07
    Java文件上传 主要是针对于网页来说,一般是通过input的file类型上传文件流到后台,再通过后台处理将文件移动到指定位置达到上传的目的。 这里贴代码时,主要是以springboot框架为例,但是是通用的。 1、表单提交...
  • 1GB以内的任何文档、图片、视频、Flash文件和音频文件都可以多文件无刷新批量上传。 1GB以内的任何文档、图片、视频、Flash文件和音频文件都可以多文件无刷新批量上传

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 510,170
精华内容 204,068
关键字:

java文件上传

友情链接: Arm.zip