保存远程地址文件到本地

今天做活动时遇到一个下载报名表的需求。感觉实现过程很有趣,记录一下。

其中 Java 代码:

/**
     * @Description: 下载报名表
     * @Author: 作者
     * @CreateTime: 某年某月某日某时
     * @param remoteFilePath 远程文件路径
     * @param localPath 本地文件路径
     */
    public void downFile(String remoteFilePath, String localPath) {
        URL urlfile = null;
        HttpURLConnection httpUrl = null;
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        File f = new File(localPath);
        try {
            urlfile = new URL(remoteFilePath);
            httpUrl = (HttpURLConnection)urlfile.openConnection();
            httpUrl.connect();
            bis = new BufferedInputStream(httpUrl.getInputStream());
            bos = new BufferedOutputStream(new FileOutputStream(f));
            int len = 2048;
            byte[] b = new byte[len];
            while ((len = bis.read(b)) != -1) {
                bos.write(b, 0, len);
            }
            bos.flush();
            bis.close();
            httpUrl.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            try {
                bis.close();
                bos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

如果抛出异常:

java.io.FileNotFoundException: D:\xxx\yyy (拒绝访问。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
at java.io.FileWriter.<init>(FileWriter.java:73)

原因在实例化 File file=new File(localPath); 的时候 localPath 是一个目录
解决办法,将 localPath 具体到文件名字。

后台接口是出来了,但是发现没解决实际问题。

毕竟下载到本地哪个文件夹不能写死。还得需要 JS 来辅助帮助用户选择目录。

下面是两种 JS 实现。

第一种:

<script>
  function SaveAs5(imgURL) {
    var oPop = window.open(imgURL,"","width=1, height=1, top=5000, left=5000");
    for(; oPop.document.readyState != "complete"; ) {
      if (oPop.document.readyState == "complete")break;
    }
    oPop.document.execCommand("SaveAs");
    oPop.close();
  }
</script>
<img src="t_screenshot_17616.jpg" id="DemoImg" border="0" onclick="SaveAs5(this.src)"> 

第二种:

<script>
  function SaveAs5(imgURL) {
    var oPop = window.open(imgURL,"","width=1, height=1, top=5000, left=5000");
    for(; oPop.document.readyState != "complete"; ) {
      if (oPop.document.readyState == "complete")break;
    }
    oPop.document.execCommand("SaveAs");
    oPop.close();
  }
</script>
<img src="../t_screenshot_17616.jpg" id="DemoImg" border="0">
<a href="#" onclick="SaveAs5(document.getElementById(‘DemoImg‘).src)"> 点击这里下载图片 </a>

这两种方式有个相同点 都是一样 low。并且也不是我想要的跟后台配合使用方式。

我需要的是弹出用户可以选择文件夹目录窗口的 JS 方法,获取地址配合后台使用。

。。。

后来发现只需一行代码就可以解决,并且调用的是浏览器自身的下载方式。很完美。

谷歌是直接在当前页面下载到固定目录。

火狐是弹出一个可以选择目录的窗口,再点击保存。代码如下:

<a href="url"></a>

一个大写的囧,是我把问题复杂化了。

接下来再附一个 a 标签

<a href="javascript:;" target="_blank">
时间: 2024-10-17 04:09:17

保存远程地址文件到本地的相关文章

PHP CURL实现远程下载文件到本地

<?php //$result=httpcopy('http://www.phpernote.com/image/logo.gif'); echo '<pre>';print_r($result); function httpcopy($url,$file='',$timeout=60){ $file=empty($file)?pathinfo($url,PATHINFO_BASENAME):$file; $dir=pathinfo($file,PATHINFO_DIRNAME); !i

Oracle数据泵远程导入文件到本地数据库

--以dba身份登录 C:\Users\Administrator>sqlplus / as sysdba --创建用户 SQL> create user bfzg0828 identified by bfzg0828 default tablespace users quota unlimited on users; --授予连接角色,资源角色给用户 SQL> grant connect,resource to bfzg0828; 授权成功. --授权创建数据链接 SQL> gr

Java读取远程服务器文件到本地

=======================华丽的分隔线============================= 查看源代码可以看到openChannel()可选值如下: =====================华丽的分隔线============================= =======================华丽的分隔线============================ 其实,最简单到,最直接的还是用scp命令 因为,如果以上程序能够运行就一定可以通过ssh登录到

PHP代码实现远程下载文件到本地的函数

<?php echo httpcopy("http://www.baidu.com/img/baidu_sylogo1.gif"); function httpcopy($url, $file="", $timeout=60) { $file = empty($file) ? pathinfo($url,PATHINFO_BASENAME) : $file; $dir = pathinfo($file,PATHINFO_DIRNAME); !is_dir($d

GIT 如何合并另一个远程Git仓库的文件到本地仓库里某个指定子文件夹并不丢失远程提交记录?

问题背景: 最近在重新整理手中的一个项目,目前该项目分为PC项目,手机项目,某第三方接口项目,第三方接口服务项目和手机项目 因为之前规划的原因,原来的四个项目是分两个解决方案来管理的 PC解决方案: #PC解决方案,2015年从Vss迁移到Git 一共三个项目 #F:\WWW\F.COM\WWW Flight.sln Flight.suo Web #PC项目 Qr #第三方接口项目 2015年新增项目,也使用PC解决方案但用分支进行管理,维护单独的通用项目,目前已经将通用项目分离到单独的分支进行

大开测试:性能- 如何下载并保存文件到本地(连载18)

7.18  如何下载并保存文件到本地 1.问题提出 如何下载并保存文件到本地? 2.问题解答 一个人事管理系统项目一般都要实现能够上传和下载电子文件(如学位照.身份证.护照或者其他Word.Excel.Pdf等格式的电子文件),测试时为了模拟下载的场景,需要编写相关脚本.在HTTP中,没有任何一个方法或是动作能够标识“下载文件”这个动作,对HTTP来说,无论是下载文件或者请求页面,都只是发出一个GET请求,LoadRunner记录了客户端发出的对文件的请求,并能够收到文件内容.因此,完全可以通过

爪哇国新游记之二十八----从url指定的地址下载一个文件到本地

package download; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.net.URLConnection; import java.util.zip.GZIPInputStream; /** * 从url指定的地址下载一个文件到本地 * 2014

[PHP学习教程]004.下载/采集远程文件到本地(Download File)

引言:如何把http://mzitu.com里的图片全部下载下来呢? 一身浩然正气的AC陷入的深思.... 当然这里涉及到的功能有线程,网页请求,页面提取,下载图片等等.今天,我们先讲一下如何下载文件.后面的教程请参看本博客的[PHP自动化-进阶]系列. 函数接口: array download_file ( [string url], [string fileName], [string dirName], [array fileType], [string type]) 方法声明: 下载任何

SSH连接下复制远程linux服务器文件到本地的命令(zz)

原文链接 许多人使用简易的SSH连接工具,有时候需要在SSH下复制文件到本地查看比较方便,我给大家介绍一个简单的命令SCP. scp是有Security的文件copy,基于ssh登录.操作起来比较方便,比如要把当前一个文件copy到远程另外一台主机上,可以如下命令. scp /home/daisy/full.tar.gz [email protected]:/home/root 然后会提示你输入另外那台172.19.2.75主机的root用户的登录密码,接着就开始copy了. 如果想反过来操作,