精华内容
下载资源
问答
  • 主要介绍了Java客户端服务端上传接收文件实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。
  • 要用qq轻聊版才可以,里面有使用教程等,如果资源过期,请通知我,谢谢。
  • 通过UDP协议接收文件,很简单的小例子,有助于了解UDP
  • SpringCloud接收文件

    2017-12-14 15:09:40
    基本的接收文件功能基本的接收文件功能基本的接收文件功能基本的接收文件功能基本的接收文件功能基本的接收文件功能基本的接收文件功能基本的接收文件功能基本的接收文件功能
  • 接收文件的程序是在《Visual C++/Turbo C串口通信编程实践》(第二版-龚建伟)一书中的“串口调试助手”源码的基础上改写的,文件默认保存于D:\RcvData.dat。 协议是:数据包的组成为:包头为一个字节(0xFF),接...
  • 主要为大家详细介绍了Java原生服务器接收上传文件,不使用MultipartFile类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 接收客户端发来的文件
  • MultipartFile是spring用来处理文件封装的一个接口,继承自InputStreamSource,而InputStreamSource接口中封装了getInputStream方法,所以这也是为什么MultipartFile能处理文件流的原因。 2. MultipartFile有哪些...

    1. 什么是MultipartFile?

    MultipartFile是spring用来处理文件封装的一个接口,继承自InputStreamSource,而InputStreamSource接口中封装了getInputStream方法,所以这也是为什么MultipartFile能处理文件流的原因。
    在这里插入图片描述

    2. MultipartFile有哪些方法

    方法名称描述
    String getName()获取的是前后端约定的传入文件的参数的名称
    String getOriginalFileName()获取的是文件的完整名称,包括文件名称+文件拓展名
    String getContentType()获取的是文件的类型,注意是文件的类型,不是文件的拓展名
    boolean isEmpty()用来判断传入的文件是否为空,如果为空则表示没有传入任何文件
    long getSize()获取文件的大小,单位是字节
    byte[] getBytes()将文件转换成一种字节数组的方式进行传输,会抛出IOException异常
    InputStream getInputStream()将文件转换成输入流的形式来传输文件,会抛出IOException异常
    void transferTo(File dest)将接收文件传输到给定目标路径

    3. MultipartFile相关spring参数配置

    涉及到文件上传和下载,免不了要进行服务关于文件上传的大小限制的配置,如果涉及到nginx的转发,也注意要进行相关参数的配置,否则可能导致调用接口失败,其中,spring针对MultipartFile的配置基本如下:

    spring: 
      servlet:
        multipart:
          max-file-size: 100MB  # 单个数据大小限制
          max-request-size: 100MB # 单次总上传数据大小
    
    

    4. HTTP封装发送MultipartFile

    1. 文件转MultipartFile

      引入maven依赖

            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.1</version>
            </dependency>
    
     /**
         * file转MultipartFile
         *
         * @param file 本地文件路径
         * @return
         */
        public static MultipartFile fileToMultipartFile(File file) {
            FileItem fileItem = createFileItem(file);
            MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
            return multipartFile;
        }
    
        private static FileItem createFileItem(File file) {
            FileItemFactory factory = new DiskFileItemFactory(16, null);
            FileItem item = factory.createItem("textField", "text/plain", true, file.getName());
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            try {
                FileInputStream fis = new FileInputStream(file);
                OutputStream os = item.getOutputStream();
                while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
                    os.write(buffer, 0, bytesRead);
                }
                os.close();
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return item;
        }
    
    1. 封装HTTP请求返回DTO对象
    @Data
    @AllArgsConstructor
    public class HttpResultDTO {
    
        /**
         * 返回的状态码
         */
        private int status;
    
        /**
         * 返回的数据信息
         */
        private String body;
    
        /**
         * 返回的头信息
         */
        private Map<String, String> header;
    }
    
    1. 封装HTTP请求
     /**
         * 发送multipartFile
         *
         * @param url           请求路径
         * @param file          MultipartFile流
         * @param fileParamName controller对应的接收名称
         * @param headerParams  追加的请求头信息
         * @param otherParams   其他请求参数
         * @return
         */
        public static HttpResultDTO postMultipartFile(String url, MultipartFile file, String fileParamName,
                                                      Map<String, String> headerParams,
                                                      Map<String, String> otherParams) {
            CloseableHttpClient httpClient = HttpClients.createDefault();
            try {
                String fileName = file.getOriginalFilename();
                HttpPost httpPost = new HttpPost(url);
                //添加header
                if (headerParams != null) {
                    for (Map.Entry<String, String> e : headerParams.entrySet()) {
                        httpPost.addHeader(e.getKey(), e.getValue());
                    }
                }
                MultipartEntityBuilder builder = MultipartEntityBuilder.create();
                builder.setCharset(Charset.forName("utf-8"));
                //加上此行代码解决返回中文乱码问题
                builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
                //文件流处理
                builder.addBinaryBody(fileParamName, file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);
                if (otherParams != null) {
                    for (Map.Entry<String, String> e : otherParams.entrySet()) {
                        //追加其他请求参数信息
                        builder.addTextBody(e.getKey(), e.getValue());
                    }
                }
                HttpEntity entity = builder.build();
                httpPost.setEntity(entity);
                //执行提交
                HttpResponse response = httpClient.execute(httpPost);
                HttpEntity responseEntity = response.getEntity();
                StatusLine statusLine = response.getStatusLine();
                int status = statusLine.getStatusCode();
                Header[] headers = response.getAllHeaders();
                String body = EntityUtils.toString(responseEntity);
                Map<String, String> headerMap = Maps.newHashMap();
                if (ArrayUtils.isNotEmpty(headers)) {
                    for (Header header : headers) {
                        headerMap.put(header.getName(), header.getValue());
                    }
                }
                return new HttpResultDTO(status, body, headerMap);
    
            } catch (Exception e) {
                //打印日志
                LOGGER.error("postMultipartFile error,url:{},ex:{}", url, e.getMessage());
            }
            return null;
        }
    

    5. 接收MultipartFile并处理

    /**
         * 文件接收处理controller
         *
         * @param file      MultipartFile文件流
         * @param accountId 账号id
         * @return
         */
        @PostMapping("/uploadAudienceFile")
        public Response<Boolean> uploadAudienceFile(@RequestParam MultipartFile file,
                                                    @RequestParam(required = false) Long accountId,
                                                    @RequestParam(required = false) Long audienceId,
                                                    @RequestParam(required = false) String userIdType) throws IOException {
            //入参强校验
            Preconditions.checkArgument(accountId != null, "广告账号为空");
            //文件流的封装
            String fileName = file.getOriginalFilename();
            MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder
                    .create();
            multipartEntityBuilder.addBinaryBody("file", file.getInputStream(),
                    ContentType.MULTIPART_FORM_DATA, fileName);
            multipartEntityBuilder.addTextBody("filename", fileName);
            //请求参数的封装
            multipartEntityBuilder.addTextBody("account_id", String.valueOf(accountId));
            multipartEntityBuilder.addTextBody("audience_id", String.valueOf(audienceId));
            multipartEntityBuilder.addTextBody("user_id_type", userIdType);
            //todo 后续的业务逻辑
    
    
            return Response.success(true);
        }
    

    6. 设置接收和传递文件的最大值

    spring:
      servlet:
        multipart:
          max-file-size: 100MB
          max-request-size: 100MB
    
    展开全文
  • flask接收文件请求并且存储文件

    千次阅读 2021-03-19 12:09:13
    flask接收文件请求并且存储文件 需要的包 import calendar,time,os #上传文件 @app.route('/api/send/file',methods=['POST']) def send_file(): file = request.files.get('file') if file is None: # 表示...

    flask接收文件请求并且存储文件

    需要的包

    import calendar,time,os
    
    #上传文件
    @app.route('/api/send/file',methods=['POST'])
    def send_file():
    	file = request.files.get('file')
    	if file is None:
    		# 表示没有发送文件
    		return {
    			'message':"文件上传失败"
    		}
    	file_name = file.filename# print(file.filename)
    	# 获取前缀(文件名称)print(os.path.splitext(file_name)[0])
    	# 获取后缀(文件类型)print(os.path.splitext(file_name)[-1])
    	suffix = os.path.splitext(file_name)[-1]#获取文件后缀(扩展名)
    	basePath = os.path.dirname(__file__)  # 当前文件所在路径print(basePath)
    	nowTime = calendar.timegm(time.gmtime())#获取当前时间戳改文件名print(nowTime)
    	upload_path = os.path.join(basePath, 'upload',str(nowTime))#改到upload目录下# 注意:没有的文件夹一定要先创建,不然会提示没有该路径print(upload_path)
    	upload_path = os.path.abspath(upload_path) # 将路径转换为绝对路径print("绝对路径:",upload_path)
    	file.save(upload_path + str(nowTime) + suffix)#保存文件
    	#http 路径
    	url = 'http://xxxx.cn/upload/'+ str(nowTime) + str(nowTime) + suffix
    
    	return {
    		'code':200,
    		'messsge':"文件上传成功",
    		'fileNameOld':file_name,
    		'fileNameSave':str(nowTime) + str(nowTime) + suffix,
    		'url':url
    	}
    

    我的文件目录,是在服务器上,上传图片之后返回文件存储的url,可以通过网址直接访问,便于直接存入路径到数据库,避免直接在数据库存入文件。
    在这里插入图片描述
    上传文件之后
    在这里插入图片描述

    展开全文
  • egg接收文件上传

    千次阅读 2020-09-01 08:55:59
    file模式接收文件 配置文件 config.multipart = { /** 文件接收配置 */ mode: 'file', tmpdir: path.resolve(workerPath, '../serverFiles/temporaryFile'), cleanSchedule: { cron: '0 0 4 * * *', }, file...

    file模式接收文件

    配置文件

    config.multipart = {
      /** 文件接收配置 */
      mode: 'file',
      tmpdir: path.resolve(workerPath, '../serverFiles/temporaryFile'),
      cleanSchedule: {
        cron: '0 0 4 * * *',
      },
      fileSize: '100mb',
      whitelist() {
        return true;
      },
      /** 文件接收配置 */
    };
    

    接收文件

    const { ctx, service } = this;
    req.files = ctx.request.files;
    
    其中files就是文件信息的数组
    

    stream模式接收文件

    配置文件

    config.multipart = {
      fileSize: '100mb',
      whitelist() {
        return true;
      },
    };
    

    接收一个文件

    const stream = await ctx.getFileStream();
    // 保存文件,或者使用文件流做别的事情
    await streamToFile(stream, saveFilePath);
    

    文件流转文件的方法

    function streamToFile(stream, saveFilePath) {
      return new Promise((res, rej) => {
        const ws = fs.createWriteStream(saveFilePath);
        stream.pipe(ws).on('finish', () => {
          console.log(`========= ${saveFilePath} pipe finish =========`);
          res(saveFilePath);
        });
        ws.on('error', err => {
          console.log(`========= ${saveFilePath} pipe error =========`);
          rej(err);
        });
      });
    }
    

    接收多个文件

    const streams = await ctx.multipart();
    let stream = null;
    const req = {};
    while ((stream = await streams())) {
      if (stream.length) {
        // 处理其他参数
        req[stream[0]] = stream[1];
      } else {
        if (!stream.filename) continue;
        // 保存文件,或者使用文件流做别的事情
        await fsHandle.streamToFile(stream, saveFilePath);
      }
    }
    
    展开全文
  • SpringMVC接收文件

    万次阅读 2018-12-04 12:34:19
    前端或APP端设置头像或发表评论等功能,需要服务端接收图片,然后保存到nginx代理路径,返回前端图片的URL。 form表单提交 前段使用form表单提交时,服务端使用org.springframework.web.multipart.MultipartFile接收...

    场景

    前端或APP端设置头像或发表评论等功能,需要服务端接收图片,然后保存到nginx代理路径,返回前端图片的URL。

    form表单提交

    前段使用form表单提交时,服务端使用org.springframework.web.multipart.MultipartFile接收。

    @Controller
    @RequestMapping("/user")
    public class UserController extends BaseController {
        @Value(value = "${image.path:./img}")
        private String imagePath;
    
        @Value(value = "${image.host:http://localhost}")
        private String imageHost;
    
        @RequestMapping(value = "/upload/file", method = RequestMethod.POST)
        @ResponseBody
        public Result<String> saveFile(@RequestParam(value = "img") MultipartFile file) {
            StringBuffer fileName = new StringBuffer();
            fileName.append(UUID.randomUUID().toString().replaceAll("-", ""));
            String type = file.getContentType();
            if ("image/png".equals(type)) {
                fileName.append(".png");
            } else if ("image/jpeg".equals(type)) {
                fileName.append(".jpeg");
            } else if ("image/gif".equals(type)) {
                fileName.append(".gif");
            } else {
                return new Result.Builder<String>()
                        .code(-1)
                        .msg("请选择.png.jpg格式的图片")
                        .build();
            }
            if (file.getSize() > 1024000L) {
                return new Result.Builder<String>()
                        .code(-1)
                        .msg("图片超过1Mb")
                        .build();
            }
            try {
                file.transferTo(new File(imagePath, fileName.toString()));
                return new Result.Builder<String>()
                        .code(0)
                        .msg("成功")
                        .data(imageHost + fileName.toString())
                        .build();
            } catch (IOException e) {
                e.printStackTrace();
                return new Result.Builder<String>()
                        .code(-1)
                        .msg("保存失败")
                        .build();
            }
        }
    }
    

    application.yml配置

    image:
      host: http://localhost/img/
      path: /data/www/img
    

    图片文件用UUID重命名后保存到/data/www/img下,nginx将80访问代理到/data/www,这样,访问时的URL为路径➕文件名。

    ajax提交Base64格式的图片

        @RequestMapping(value = "/upload/base64", method = RequestMethod.POST)
        @ResponseBody
        public Result<String> saveBase64(@RequestParam(value = "img") String base64Str) {
            StringBuffer fileName = new StringBuffer();
            fileName.append(UUID.randomUUID().toString().replaceAll("-", ""));
            if (StringUtils.isBlank(base64Str)) {
                return new Result.Builder<String>()
                        .code(-1)
                        .msg("file不可缺省")
                        .build();
            } else if (base64Str.indexOf("data:image/png;") != -1) {
                base64Str = base64Str.replace("data:image/png;base64,", "");
                fileName.append(".png");
            } else if (base64Str.indexOf("data:image/jpeg;") != -1) {
                base64Str = base64Str.replace("data:image/jpeg;base64,", "");
                fileName.append(".jpeg");
            } else {
                return new Result.Builder<String>()
                        .code(-1)
                        .msg("请选择.png.jpg格式的图片")
                        .build();
            }
            File file = new File(imagePath, fileName.toString());
            byte[] fileBytes = Base64.getDecoder().decode(base64Str);
            try {
                FileUtils.writeByteArrayToFile(file, fileBytes);
            } catch (IOException e) {
                e.printStackTrace();
                return new Result.Builder<String>()
                        .code(-1)
                        .msg("保存失败")
                        .build();
            }
            return new Result.Builder<String>()
                    .code(0)
                    .msg("成功")
                    .data(imageHost + fileName.toString())
                    .build();
        }
    
    展开全文
  • python flask接收文件

    千次阅读 2020-05-17 09:06:06
    # 获取图片文件 img = request.files.get('file') # 定义一个图片存放的位置 存放在static/img下面 path = "/static/img/" # 图片名称 img_name = img.filename # 图片path和名称组成图片的保存路...
  • SpringBoot 接受文件和对象

    千次阅读 2019-10-16 12:11:44
    SpringBoot 接受文件和对象 使用场景:某个接口,需要同时接受文件和实体,也就是参数 一、这个时候,前端就不能json格式传送数据了,要用到multipart/form-data;这种格式传送数据。 二、那么,这个时候,后端应该...
  • ajax接收文件流 设置接收参数格式为responseType: ‘blob’, 2.接收文件流并创建地址(若为图片可把地址赋值给img标签) 3.下载 本例为vue全家桶中的下载为例** download (name, fileUrl) { this.$axios({...
  • ASP.NET Web API 接收文件上传

    热门讨论 2015-05-24 10:07:42
    ASP.NET Web API File Upload and Multipart MIME
  • java接受文件

    千次阅读 2019-08-30 10:01:41
    java 接受文件流 1. 接受响应体: public class BinaryResponse { private Integer statusCode = null; private byte[] result = null; private boolean success = false; private Map<String, String>....
  • 全自动QQ文件自动接收软件破解版/免费版
  • c#利用TcpClient发送与接收文件源码

    热门讨论 2014-01-27 16:31:39
    c#利用TcpClient发送与接收文件源码。
  • 后端(express): Access-Control-Expose-... 使用jQuery接收文件流,获取的excel有乱码: 如果是按照如下格式写,就会有乱码问题,按照上面的方法就不会有问题: $.ajax({ ... responseType: 'blob' // 无效 ... })
  • Qt拖拽接收文件

    千次阅读 2018-09-11 10:45:16
    Qt拖拽接收文件 Qt拖拽接收文件 功能 效果图 代码工程 结尾 功能 1.仅支持单文件接收 2.不支持文件夹接收 3.支持拖拽或点击文件选择框接收 效果图 代码工程 Qt交流大会 853086607 收费群...
  • 后端接收参数和读取文件内容的代码: params_file = request.files['action'] dst = os.path.join(os.path.dirname(__file__), params_file.name) params_file.save(dst) with open(dst, 'r') as file: cont = ...
  • win10蓝牙接收文件【实测成功】

    千次阅读 2019-11-16 12:41:56
    仅作为学习记录,大佬请跳过。 步骤: 1、蓝牙连接 设置蓝牙配对:(similar to 手机蓝牙配对——“一线式操作”即可) ... 博主到这一步后未能找到相连接的手机蓝牙;...2、手机向电脑发送文件by bluet...
  • AJAX接收文件流实现下载的两种方式

    千次阅读 2020-10-28 15:28:39
    AJAX接收文件流实现下载的两种方式 第一种: $("#download").click(function() { var ticketNumber=$("#ticketNumber").val(); var url = '/agent/risk/order/download?ticketNumber='+ticketNumber; var xhr = ...
  • SpringMVC接收文件流上传和表单参数

    千次阅读 2019-01-29 20:27:25
    在SpringMVC中,接收文件流非常简单,我们可以写个接口用来接收一些文件,同时还可以接收表单参数。 代码参考如下: JAVA服务端代码 /** * 接收文件流 * * @param request 请求 * @return OK */ @...
  • SpringBoot+Jquery 1.单文件 前端Jquery var url=".........."...//uploadFile就是后台接收文件参数名称 formData.append('uploadFile', $('#file')[0].files[0]); jQuery.ajax({ type: 'po...
  • Spring Boot接收文件上传

    千次阅读 2019-01-14 18:25:02
    1.转换为Spring Boot的时候,需要采用@ResponseBody或@ResponseParam来接收到这些表单数据 2.需要进行url转码 解决方式: 首先将如下内容: @POST @Path("test") @Produces({MediaType.APPLICATION...
  •  // 获取文件的后缀名  String suffixName = fileName.substring(fileName.lastIndexOf("."));  // 文件上传后的路径  String filePath = "C:\\Users\\zhangzq\\Desktop\\test\\";  File dest = new File...
  • Jersey是什么就不再多做介绍了,做这个的项目背景是,有一个功能...一Jersey服务端接收文件,此处先用form表单作提交演示。 前端页面这里就写个简单的form做个演示。 <form id="" action="xx" method="POST" ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,992,446
精华内容 796,978
关键字:

接收文件