zoukankan      html  css  js  c++  java
  • 软工超越日报-Android文件下载器 5/12

    向大地震中去世的同胞致敬

    今天要做的是一个可以执行下载的下载器,虽然据说安卓原生有Downloadmananger这种“方便”的下载器,但我个人还是更倾向于这种比较简单不那么难操作的东西

    先上servlet端代码:

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
             response.setCharacterEncoding("UTF-8");
             response.setHeader("Access-Control-Allow-Origin", "*");
             response.setContentType("text/html;charset=UTF-8");
             response.setHeader("content-type","text/html;charset=UTF-8");
             String file=new String(request.getParameter("filename").getBytes("utf-8"),"utf-8");
             File f = new File("C:\Users\14997\Desktop\nb\"+file);  
             FileInputStream  fis = new FileInputStream(f);  
            String filename=URLEncoder.encode(f.getName(),"utf-8"); 
            byte[] b = new byte[fis.available()];  
            fis.read(b);
            response.setHeader("Content-Disposition","attachment; filename="+filename+"");  
            //获取响应报文输出流对象  
            ServletOutputStream  out =response.getOutputStream();  
            //输出  
            out.write(b);  
            out.flush();  
            out.close(); 
         }

    其实也是在向网页上推字节流

    那么我们来写下安卓的下载:

     public int downFile(String filename) {
            InputStream inputStream = null;
            File file = new File(vs.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)+"/"+filename);
            try {
                if (file.exists()) {
                    return 1;
                } else {
                    file.createNewFile();
                    String url = links[4]+filename;
                    URL urll = new URL(url);
                    HttpURLConnection urlConn = (HttpURLConnection) urll.openConnection();
                    inputStream = urlConn.getInputStream();
                    OutputStream output = new FileOutputStream(file);
                    byte buffer [] = new byte[4 * 1024];
                    while((inputStream.read(buffer)) != -1){
                        output.write(buffer);
                    }
                    output.flush();
                    output.close();
                    File resultFile = file;
                    if (resultFile == null) {
                        return -1;
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
                file.delete();
                return -1;
            } finally {
                try {
                    inputStream.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return 0;
        }

    这样就可以实现文件的下载了,只需将其放在对应的目录下即可通过该下载函数请求下载

  • 相关阅读:
    环境变量配置1
    Golang 类型转换,断言和显式强制转换
    Goland could not launch process: decoding dwarf section info at offset 0x0: too short 解决方案
    用puttygen工具把私钥id_rsa转换成公钥id_rsa.ppk
    JetBrains GoLand 2018 激活码/ 注册码(最新破解方法)
    Go学习笔记(只有链接)
    linux中的ftp命令
    Linux的学习之路
    like语句百分号前置会使用到索引吗?
    记录下每月生活开支
  • 原文地址:https://www.cnblogs.com/Sakuraba/p/14910899.html
Copyright © 2011-2022 走看看