通过url 下载文件

1、问题简介

  通过文件的url,将文件下载到本地。文件存储的位置为:tomcat服务器的文件夹(通过读取properties文件:可看:http://www.cnblogs.com/0201zcr/p/4700418.html

2、实现思路

  读取properties文件,将获得文件将要存储的位置

  通过java的Url类,将网上的文件下载到本地

3、代码实现

1)、读取properties文件(这里建立的是一个web project)

package com.zcr.until;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class GetFilePlace
{
    /**
     * 读取文件,获取保存的根目录
     * @return  保存的根目录
     */
    public   String getFilePath(String fileProperties)
    {
        String dir = System.getProperty("user.dir");  //获得tomcat所在的工作路径  

        //获取到存储了文件存储位置的filedir.properties 文件路径
       // String realDir = dir + File.separator + "src" + File.separator +"META-INF" + File.separator + "config" + File.separator + "picture.properties";
       String realDir = dir.substring(0, dir.length()-4) + File.separator +"webapps" + File.separator + "appDataGenerate" +File.separator + "WEB-INF"
                + File.separator + "classes" + File.separator + "META-INF" + File.separator + "config" + File.separator + fileProperties;

       /* String realDir = dir.substring(0, dir.length()-4) + File.separator +"webapps" + File.separator + "appDataGenerate"
                      + File.separator + "classes" + File.separator + "META-INF" + File.separator + "config" + File.separator + fileProperties;
    */
        System.out.println("realDir = " + realDir);
        return realDir;
    }

    /**
     * 获取filePath路径【properities文件】中key对应的值,
     * @param filePath properities文件路径【包含properities文件】
     * @param key 要查找的key值
     * @return key对应的value
     */
     public   String GetValueByKey(String filePath, String key)
     {
         Properties pps = new Properties();
         try {
              InputStream in = new BufferedInputStream (new FileInputStream(filePath));
              pps.load(in);
             String value = pps.getProperty(key);
             in.close();
             return value;

         }catch (IOException e) {
             e.printStackTrace();
             return null;
         }
     }

    /**
     * 查询properities文件中可以对应的存储地点
     * @param key 查询主键
     * @return    key对应的存储地址
     */
    public  String getFileDirFromProperties(String key,String fileProperties)
    {
        return GetValueByKey(getFilePath(fileProperties),key);
    }

    public static void main(String[] args)
    {
        System.out.println(new GetFilePlace().getFileDirFromProperties("brandLogo","picture.properties"));
    }
}

2)、文件下载类

package com.zcr.until;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import javax.servlet.http.HttpServletRequest;

public class URLConnectionDownloader
{        //单纯测试下载
    public static void main(String[] args)
    {
        download("http://stocardapp.s3-external-3.amazonaws.com/ios/icons/[email protected]", "E:\\xiazai.jpg");
    }

    /**
     * 将urlString的文件下载到
     * @param filePathName        properties文件中的文件存储名
     * @param fileProperties    查找的properties文件
     * @param urlString            待下载的文件url
     * @param fileName             生成的文件名称
     */
    public static void downloadToSelectedFolder(String filePathName,String fileProperties,String urlString,String fileName,HttpServletRequest request)
    {
        //获得picture.properties 文件中,key为android_banner_url的值
        String pathSavePath = new GetFilePlace().getFileDirFromProperties("android_banner_url","picture.properties");

        //获得服务器(tomcat)pathSavePath的相对位置
        String path = request.getSession().getServletContext().getRealPath(pathSavePath);

        //获得文件存储的绝对路径
        String generateFileName = path + File.separator + fileName;

        download(urlString,generateFileName);
    }

    /**
       * 下载文件到本地
       *
       * @param urlString
       *          被下载的文件地址
       * @param filename
       *          本地文件名
       */
    public static void download(String urlString, String filename)
    {
        // 构造URL
        URL url;
        try
        {
            url = new URL(urlString);
             // 打开连接
            URLConnection con = url.openConnection();
            // 输入流
            InputStream is = con.getInputStream();
            // 1K的数据缓冲
            byte[] bs = new byte[1024];
            // 读取到的数据长度
            int len;
            // 输出的文件流s
            OutputStream os = new FileOutputStream(filename);
            // 开始读取
            while ((len = is.read(bs)) != -1) {
              os.write(bs, 0, len);
            }
            // 完毕,关闭所有链接
            os.close();
            is.close();
        }
        catch (MalformedURLException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

3)、网页调用

URLConnectionDownloader.downloadToSelectedFolder("android_banner_url","picture.properties","http://stocardapp.s3-external-3.amazonaws.com/ios/icons/[email protected]","2x.png",request);

4)、测试结果

网页的图片:

下载的图片

  致谢:感谢您的阅读!

时间: 2024-09-29 17:45:36

通过url 下载文件的相关文章

防止通过URL下载文件

网页中向用户提供了ppt文件的下载功能,前提是只有登录的用户才能下载,所以需要禁止通过URL对文件进行下载. 自己定义一个文件下载类. using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.We

前端通过url下载文件方法

产生背景 浏览器通过url下载文件,当浏览器识别出资深能播放的资源文件,就不会走下载流程,会直接打开 解决方法 1.让后台转成请求的方式,输出文件流(如果想实现批量下载-因为浏览器会误判多文件下载是个攻击,可新建iframe通过src实现批量下载) 2.a标签, h5的download,仅仅限制当前域名下的文件下载,不同域名之下的,不会走下载,会直接打开浏览器能自动识别的资源文件 3.通过下面前端看似狗屎的代码解决 // 保存到本地并自动点击 function saveAs(data, name

通过URL下载文件

URL url = new URL(fileRoute);//fileRoute:文件URL路径//通过URL的openStrean方法获取URL对象所表示的自愿字节输入流InputStream is = url.openStream();// 设置response参数,可以打开下载页面response.reset();String mimeType = MimeUtil.getMIMEType(fileName);//获取Mime 类型列表 地址:http://www.w3school.com

ANDROID_MARS学习笔记_S01原始版_009_下载文件

一.代码1.xml(1)main.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_pa

使用HTTP协议下载文件

为了测试方便,在自己的电脑上开一个web服务Tomcat,在Tomcat的webapps文件夹里放测试下载用的文件 在cmd的ipconfig指令下查看自己的主机的IP地址. 之前没有接触过Tomcat,就先按网上介绍的安装教程下载Tomcat,并在Eclipse配置好Tomcat http://blog.chinaunix.net/uid-25434387-id-167705.html 初次安装配置会出现一些错误,但在网上都能找到解决办法,直到Tomcat正常工作 使用HTTP·协议下载文件:

C#实现http协议支持上传下载文件的GET、POST请求

C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.Collections; using System.IO; using System.Text.RegularExpressions; using RE = System.Text.Regula

curl基于URL的文件传输工具

简介 cURL是一款开源的基于URL的文件传输工具,支持HTTP.HTTPS.FTP等协议,支持POST.cookie.认证.扩展头部.限速等特性. curl命令用途广泛,比如下载.发送http请求.指定http头部等. wget是个专职的下载利器,简单,专一,极致:而curl可以下载,但是长项不在于下载,而在于模拟提交web数据,对请求报文进行设置,从而对网页进行调试. wget支持递归下载,curl不支持.所以区分下来就是下载数据使用wget,网页调试使用curl. 常用功能 curl UR

从网络上下载文件

文件的下载: 使用HTTP协议下载文件 ·创建一个HttpURLConnection对象 HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection(); ·获得一个InputStream对象 urlConn.getInputStream() ·访问网络的权限 android.permission.INTERNET ·从网络上下载文件夹 HttpDownload.java中的代码: public class Http

C# 下载文件 删除文件 写入文本

由于经常用到文件处理,便自己封装了下 分享给大家. 包含写入文本  批量删除文件  下载文件 .--可直接使用 /// <summary>/// 写入到txt/// </summary>/// <param name="savePath"></param>/// <param name="content"></param>public static void WriteInTxt(string