bytearray和file的后端上传方式

public static  String readAndUpload(String serverpath,String imgid) {
        if(serverpath==null){
            serverpath = OLD_IMG_SERVER_URL;
        }
        CloseableHttpClient httpclient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
                     try {
                         // 创建httpget
                         URL url = new URL(serverpath+imgid);
                         URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), url.getQuery(), null);
                         HttpGet httpget = new HttpGet(uri);
                         System.out.println("executing request " + httpget.getURI());
                         // 执行get请求.
                         response = httpclient.execute(httpget);
                         // 获取响应实体
                         HttpEntity entity = response.getEntity();
                         System.out.println("--------------------------------------");
                         // 打印响应状态
                         System.out.println(response.getStatusLine());
                         if (entity != null) {
                             long len = entity.getContentLength();
                             // 打印响应内容长度
                             System.out.println("image content length: " + len);
                             System.out.println("------------------------------------");
                             //准备上传图片数据
                             byte[] buffer = null;  InputStream fis=null;
                             if(len>=1000000){
                                 System.err.println(imgid+"====Scale:"+1000000.0f/len);
                                 Thumbnails.of(new URL(serverpath+imgid)).outputFormat("jpeg").scale(1)
//                                 .scale(1000000.0f/len)
                                 .toFile("temp.jpg");
                                 fis = new FileInputStream("temp.jpg");
                             }else{
                                 fis = entity.getContent();
                             }
                                     ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
                                     byte[] b = new byte[1024];
                                     int n;
                                     while ((n = fis.read(b)) != -1) {
                                         bos.write(b, 0, n);
                                     }
                                     fis.close();
                                     bos.close();
                                     buffer = bos.toByteArray();
                                 EntityUtils.consume(entity);

                                 //开始上传
                                 HttpPost httppost = new HttpPost(NEW_IMG_SERVER_URL);

                                 ByteArrayEntity byteArrayEntity = new ByteArrayEntity(buffer);
                                 httppost.setEntity(byteArrayEntity);
                                 httppost.addHeader("Content-Type", "jpeg");

                                 System.out.println("executing request " + httppost.getRequestLine());
                                 Header[] headers =  httppost.getAllHeaders();
                                 response = httpclient.execute(httppost);

                                 System.out.println("----------------Response-----------------------");
                                 System.out.println(response.getStatusLine());
                                 HttpEntity resEntity = response.getEntity();
                                 if (resEntity != null) {
                                     String resp = EntityUtils.toString(resEntity);
                                     System.out.println("Response content length: " + resEntity.getContentLength());
                                     System.out.println("Response content : " + resp);
                                     ImgInfo o = JsonUtil.fromJsonToObject(resp, ImgInfo.class);
                                     if(o==null || o.getInfo()==null){
                                         return null;
                                     }
                                     return  o.getInfo().getMd5();
                                 }

                                 EntityUtils.consume(resEntity);
                         }else{
                             return null;
                         }

                     } catch (ClientProtocolException e) {
                        e.printStackTrace();
                        return null;
                    } catch (IOException e) {
                        e.printStackTrace();
                        return null;
                    } catch (URISyntaxException e) {
                        e.printStackTrace();
                        return null;
                    } finally {
                         try {
                             if(response!=null){
                                 response.close();
                                 response = null;
                             }
                            httpclient.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                     }
                    return null;

    }

    public static  String readFileAndUpload(File file) {

        CloseableHttpClient httpclient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        try {
                //准备上传图片数据
                byte[] buffer = null;  InputStream fis = new FileInputStream(file);
                ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
                byte[] b = new byte[1024];
                int n;
                while ((n = fis.read(b)) != -1) {
                    bos.write(b, 0, n);
                }
                fis.close();
                bos.close();
                buffer = bos.toByteArray();  

                //开始上传
                HttpPost httppost = new HttpPost(NEW_IMG_SERVER_URL);

                ByteArrayEntity byteArrayEntity = new ByteArrayEntity(buffer);
                httppost.setEntity(byteArrayEntity);
                httppost.addHeader("Content-Type", "jpeg");

                System.out.println("executing request " + httppost.getRequestLine());
                Header[] headers =  httppost.getAllHeaders();
                response = httpclient.execute(httppost);

                System.out.println("----------------Response-----------------------");
                System.out.println(response.getStatusLine());
                HttpEntity resEntity = response.getEntity();
                if (resEntity != null) {
                    String resp = EntityUtils.toString(resEntity);
                    System.out.println("Response content length: " + resEntity.getContentLength());
                    System.out.println("Response content : " + resp);
                    ImgInfo o = JsonUtil.fromJsonToObject(resp, ImgInfo.class);
                    if(o==null || o.getInfo()==null){
                        return null;
                    }
                    return  o.getInfo().getMd5();
                }

                EntityUtils.consume(resEntity);

        } catch (ClientProtocolException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                if(response!=null){
                    response.close();
                    response = null;
                }
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;

    }
时间: 2024-10-06 00:36:51

bytearray和file的后端上传方式的相关文章

Spring Boot + Vue 前后端分离,两种文件上传方式总结

在Vue.js 中,如果网络请求使用 axios ,并且使用了 ElementUI 库,那么一般来说,文件上传有两种不同的实现方案: 通过 Ajax 实现文件上传 通过 ElementUI 里边的 Upload 组件实现文件上传 两种方案,各有优缺点,我们分别来看. 准备工作 首先我们需要一点点准备工作,就是在后端提供一个文件上传接口,这是一个普通的 Spring Boot 项目,如下: SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/

Web的几种上传方式总结

问题 文件上传在WEB开发中应用很广泛. 文件上传是指将本地图片.视频.音频等文件上传到服务器上,可以供其他用户浏览或下载的过程. 以下总结了常见的文件(图片)上传的方式和要点处理. 表单上传 这是传统的form表单上传,使用form表单的input[type=”file”]控件,可以打开系统的文件选择对话框,从而达到选择文件并上传的目的,它的好处是多浏览器兼容,它是web开发者最常用的一种文件上传方式. 表单的代码如下: <form method="post" action=&

input file 美化及上传本地预览

效果: /*input file 美化及上传本地预览,兼容IE6-8,FIrefox, Chrome(需在服务端,本地无效)*/<!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    <title>input file 美化</title>    &

Springmvc file多附件上传 显示 删除操作

之前项目需求要做一个多附件上传 并显示上传文件 带删除操作 一筹莫展之际搜到某个兄弟发的博客感觉非常好用被我copy下来了此贴算是改良版 再次感谢(忘记叫什么了时间也有点久没有历史记录了)先上图 基于springmvc附件上传 所需jar包 commons.fileupload-1.2.0.jar commons.io-1.4.0.jar 这个是我使用的jar包有需要的可以直接百度网盘下载 里面有好几个版本 自行选择 放在lib下面 使用的话maven 直接下载也可以 链接:https://pa

HTTP multipart/form-data 上传方式说明(有8个注意点)

( From: http://home.meegoq.com/home-space-do-blog-uid-17-id-81.html ) HTTP multipart/form-data 上传方式说明 已有 123 次阅读 2010-12-1 11:13 |个人分类:网络学习|关键词:HTTP multipart http上传文件方面的功能使用的协议是rfc1867 (http://www.ietf.org/rfc/rfc1867.txt) 为 http 协议.客户端的浏览器,如 Micros

html input file标签的上传文件 注意点

文件上传框  代码格式:<input type=“file” name=“...” size=“15” input enctype="multipart/form-data“ maxlength=“100”> 属性解释: 属性解释: type=“file”定义文件上传框: name属性定义文件上传框的名称,要保证数据的准确采 集,必须定义一个独一无二的名称: size属性定义文件上传框的宽度,单位是单个字符宽度: maxlength属性定义最多输入的字符数. 注意: 要使得文件上载能

在ASP.NET中实现图片、视频文件上传方式

一.图片 1.在前端用<asp:FileUpload ID="UpImgName" runat="server"/>控件 2.在后台.cs中写上 protected void btnSubmit_Click(object sender,EventArgs e) { string strImgPath=string.Empty; string strDateTime=dateTime.Now.Tostring("yyyyMMddhhmmss&qu

IE input file隐藏不能上传文件解决方法

当大神们都在探讨更深层次的问题时,我还在这里转载发些肤浅的问题解决方案.罢了,为了和我一样笨的后来人. 问题: 上传文件时,用<input type="file" />标签,但是默认的file标签很难看,而且每个浏览器下都有很大差距. 1.一般解决办法: 我们基本都把真正的file标签给隐藏,然后创建一个标签来替代它,比如我们创建一个a标签来替代它,隐藏file标签,单击a标签时触发file标签click弹出选择文件窗口,选择文件之后,触发file的change事件提交.

国内各大安卓(Android)市场的上传方式、认领、通过审核有哪些不同,有什么值得注意的地方?

6 个回答 赞同89反对,不会显示你的姓名 唐元鹏,扯淡爱好者 Jc droid.李明亮.知乎用户 等人赞同 作为一个android菜鸟开发者,代码水平不咋样,却练就了一身上传app的本领,大体说一下我的经验.上传每个市场也许会布局不同,但内容大致一样,图标.apk.文字介绍.关键词.截图准备好了,基本每个市场都可以上传.认领每个市场的具体需要的东西有所不同,但是如果有代码截图.公司营业执照(个人的话应该是身份证).app的安装包,基本上都能认领成功,再和客服联系一下妥妥的.审核规则安卓市场:审