shan915135210 2014-10-30 02:19 采纳率: 42.9%
浏览 5108

服务器端下载多张图片,保存到本地,现在只能保存一张图片

服务端代码:
resp.setContentType("text/html;charset=UTF-8");
// 得到下载用户的名字
String name=req.getParameter("name");
//下载的所有图片
ArrayList downList=UserDbUtil.getInstance().downloadPIC(DbUtil.openDb(), name);

    FileInputStream fis=null;
    OutputStream toClient=null;

    for (int i = 0; i < downList.size(); i++) {
        System.out.println("下载图片的路径:"+downList.get(i));
        // 解决中文乱码问题
        String filename = new String(downList.get(i).getBytes(
                "iso-8859-1"), "UTF-8");
        // 创建file对象
        File file = new File(filename);
        // 设置response的编码方式
        resp.setContentType("application/x-msdownload");

        // 写明要下载的文件的大小
        resp.setContentLength((int) file.length());
        // 设置附加文件名
        // response.setHeader("Content-Disposition","attachment;filename="+filename);
        // 解决中文乱码
        resp.setHeader("Content-Disposition", "attachment;filename="
                + new String(filename.getBytes("gbk"), "iso-8859-1"));
        // 读出文件到i/o流
        fis = new FileInputStream(file);
        BufferedInputStream buReader = new BufferedInputStream(fis);
        byte[] b = new byte[1024];// 相当于我们的缓存
        // 从response对象中得到输出流,准备下载
        toClient = resp.getOutputStream();
        int num;
        // 开始循环下载
        while ((num = buReader.read(b)) != -1) {
            // 将b中的数据写到客户端的内存
            toClient.write(b, 0, num);
        }
        // 将写入到客户端的内存的数据,刷新到磁盘
        toClient.flush();
        toClient.close();
        fis.close();
        System.out.println("下载图片到本地。。。。");
    }

android代码:
/**
* 下载图像方法
*
* @param url
* @return
*/
public static Bitmap downloadBitmap(String url) {
Bitmap bitmap = null;

        HttpGet get = new HttpGet(url);// 下载地址
        // 客户端对象
        HttpClient client = new DefaultHttpClient();
        try {
            HttpResponse resp = client.execute(get);
            if (resp.getStatusLine().getStatusCode() == 200) {
                // 连接成功,获取下载的数据流
                InputStream in = resp.getEntity().getContent();

                // 将数据流转为图像并返回(注意大图处理)
                bitmap = BitmapFactory.decodeStream(in);


                //获取长度
                in.close();// 关闭流
                Log.e("nnnnnnn", "服务器下载到图片");

            }
            client.getConnectionManager().shutdown();
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } // 执行连接获取结果
        return bitmap;
    }
  • 写回答

1条回答

  • feiyun0112 2014-10-30 02:34
    关注

    一个url只能下一个文件,你可以发送zip文件,再在android端解压

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置