文件上传至网关服务器

该代码段展示了如何使用Apache HttpClient库来实现文件上传操作。它创建一个HttpPost对象,设置上传URL,构造MultipartEntityBuilder来添加文件名和文件内容,并通过HttpClient执行请求,最后处理响应并返回结果。

 /**
     * 上传文件
     *FileBean 包含 InputStream 与  fileName
     * @return
     */
    @Override
    public String upload(FileBean fileBean) {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        String result = null;
        try {
            HttpPost httpPost = new HttpPost(uploadUrl);//uploadUrl 网关地址
            ContentType stringBodyContentType = ContentType.create("text/plain", Consts.UTF_8);
            MultipartEntityBuilder mEntityBuilder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);
            StringBody filename = new StringBody(String.valueOf(fileBean.getFileName()), stringBodyContentType);
            mEntityBuilder.addPart("filename", filename);
            mEntityBuilder.addBinaryBody("in",fileBean.getFileInputStream(), ContentType.MULTIPART_FORM_DATA,fileBean.getFileName());
            httpPost.setEntity(mEntityBuilder.build());
            response = httpclient.execute(httpPost);
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode == HttpStatus.SC_OK) {
                result =  EntityUtils.toString(response.getEntity());
            }
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("fileName", fileBean.getFileName());
            jsonObject.put("uniquekey", result);
            return jsonObject.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
       
            try {
                if (response != null){
                    response.close();
                }
                if (httpclient != null){
                    httpclient.close();
                }
            } catch (IOException e) {
                log.error("释放占用资源出现异常! 原因:"+e.getMessage());
            }
        }
        return null;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值