文件上传至网关服务器

 /**
     * 上传文件
     *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;
    }

### Nginx 文件上传配置 为了使Nginx能够支持文件上传操作,通常的做法不是让Nginx直接处理这些请求,而是将其设置为反向代理服务器,将实际的文件上传任务交给后端应用服务器完成[^1]。 #### 基本配置示例 以下是用于配置Nginx以支持文件上传的一个基本例子: ```nginx http { ... client_max_body_size 10m; # 设置允许客户端发送的最大单个文件大小 ... server { listen 80; server_name localhost; location /upload/ { proxy_pass http://backend_server_address; # 将请求转发给后端服务器 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 客户端超时时间调整 client_body_timeout 60; send_timeout 60; } # 如果需要验证身份才能上传,则可加入如下配置 auth_basic "Restricted Area"; auth_basic_user_file /path/to/.htpasswd; } } ``` 此段配置中的`client_max_body_size`指令定义了最大允许上传的文件尺寸;而通过`proxy_pass`命令指定了接收并处理文件的实际应用程序的位置。此外,在某些情况下可能还需要增加一些额外的安全措施,比如使用HTTP基础认证(`auth_basic`)保护特定路径下的资源访问权限[^2]。 对于更复杂的场景,如果希望完全由Nginx独立承担起文件管理职责(即不仅限于简单地充当网关),则可以根据具体需求进一步定制化配置,甚至考虑集成第三方模块来增强功能[^3]。 最后值得注意的是,当涉及到具体的编程语言环境时(如PHP、Node.js等),还需确保相应的运行环境中已正确设置了接受multipart/form-data编码类型的POST请求的能力,并能妥善保存接收到的数据流到磁盘或其他持久化存储介质中去[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值