首页 新闻 搜索 专区 学院

点击一个普通按钮,弹出保存的对话框。

0
悬赏园豆:120 [已关闭问题] 关闭于 2017-01-18 09:26

如图,我想在点击下载按钮的时候弹出来一个选择路径的对话框,然后后台需要获取那个路径,下载按钮只是一个普通的button。上边的红框里的东西只是一个普通的div。

 

Oven5217的主页 Oven5217 | 初学一级 | 园豆:18
提问于:2017-01-13 15:39
< >
分享
所有回答(7)
2

你这是网站?

盟怀部孩 | 园豆:878 (小虾三级) | 2017-01-13 15:40

看样子不像,不过能做成这么丑也是本领。

支持(1) 反对(0) Daniel Cai | 园豆:10374 (专家六级) | 2017-01-13 15:43

上边的红框里的东西只是一个普通的div。

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-13 15:44

@我叫乾乾: 你这个的问题:

1.弹出来一个选择路径的对话框?

2.后台需要获取那个路径?

第一,好解决,直接丢出文件,就会提示选择路径。

第二,行不通,如果通过JS设置地址,但是JS不能存储文件,客户还是可以把文件存在另外的路径里。

支持(0) 反对(0) 盟怀部孩 | 园豆:878 (小虾三级) | 2017-01-13 15:58

@盟怀部孩: 是这样的,文件不在本机,在另一台服务器上,我只能获取文件在服务器的存放路径,而且是复选框,就是一次可以下载多个文件,获取到文件列表(就是各个文件在服务器的存放路径)后我选择需要下载的文件,选中后点击下载按钮,然后弹出设置保存路径的对话框,选择路径确认后就会向服务器发送一个需要下载的文件在服务器里存放的路径,和需要下载到本地的路径,然后开始下载,我说明白了吗?文件不在我的电脑上,在另一个服务器里,我只能获取它的存放路径,我怎么能下载到本地的指定目录?

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 09:53

@Daniel Cai: 温饱的问题解决了,再解决好看的问题,都没有东西吃了,你还在乎穿的什么衣服?

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 09:54

@我叫乾乾: 我那样分析给你,你都不明白?本地下载就下载了。服务器不可能知道的。

支持(0) 反对(0) 盟怀部孩 | 园豆:878 (小虾三级) | 2017-01-16 09:57

@我叫乾乾: 如果服务器能知道你本地的下载路径,你仔细想想,服务器是不是可以变相的扫描你的电脑?

支持(0) 反对(0) 盟怀部孩 | 园豆:878 (小虾三级) | 2017-01-16 09:58

@我叫乾乾: 文件不在我的电脑上,在另一个服务器里,我只能获取它的存放路径,我怎么能下载到本地的指定目录?

这个问题,你直接把文件地址当成页面地址丢出来就可以了。

支持(0) 反对(0) 盟怀部孩 | 园豆:878 (小虾三级) | 2017-01-16 09:59

@我叫乾乾: 选择路径确认后就会向服务器发送一个需要下载的文件在服务器里存放的路径,和需要下载到本地的路径,然后开始下载,我说明白了吗?,这个问题的话,行不通。

支持(0) 反对(0) 盟怀部孩 | 园豆:878 (小虾三级) | 2017-01-16 10:00

@盟怀部孩: 嗯,这个我知道,但是关键它是复选框啊,就是一次选中多个文件,同时下载。

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 10:05

@盟怀部孩: 那就是,我知道服务器里的一个文件的存储路径,我怎么下载下来?而且是以列表复选框的形式,要同时选中多个一起下载。

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 10:07
1

去找个弹框插件.就是了

吴瑞祥 | 园豆:28851 (高人七级) | 2017-01-13 15:46

 重点不是弹出框,而是那个下载的动作。

是这样的,文件不在本机,在另一台服务器上,我只能获取文件在服务器的存放路径,而且是复选框,就是一次可以下载多个文件,获取到文件列表(就是各个文件在服务器的存放路径)后我选择需要下载的文件,选中后点击下载按钮,然后弹出设置保存路径的对话框,选择路径确认后就会向服务器发送一个需要下载的文件在服务器里存放的路径,和需要下载到本地的路径,然后开始下载,我说明白了吗?文件不在我的电脑上,在另一个服务器里,我只能获取它的存放路径,我怎么能下载到本地的指定目录?

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 09:55

@我叫乾乾: 最简单的办法是window.open打开一个新窗口.连接就是文件地址.

如果是可下载的contenttype,浏览器就会自动弹出下载的框让你选路径

PS:只能一个一个来.没有批量一说.

支持(0) 反对(0) 吴瑞祥 | 园豆:28851 (高人七级) | 2017-01-16 10:30

@吴瑞祥: 没有批量?那网站上的那些选中文件,然后批量下载都是怎么来的?

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 10:47

@我叫乾乾: 不好意思没见过.你可以举个例子吗?

支持(0) 反对(0) 吴瑞祥 | 园豆:28851 (高人七级) | 2017-01-16 11:39

@吴瑞祥: 

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 13:01

@我叫乾乾: 那叫迅雷批量.....你要做这种事情.就抄他的吧.

浏览器本身是没法做这种事情的.

支持(0) 反对(0) 吴瑞祥 | 园豆:28851 (高人七级) | 2017-01-16 13:25
0

你的button 是 控件还是<input  type="button" 下载>。假设是后者,思路如下,

1.给button绑定click 事件。(不知道的话你需要去学习Jquery)

2.点击后你需要用到ajax异步请求,调取你的视频路径数据。(依然需要去学习Jquery)

3.取得数据之后,你需要填充你的数据到弹出框。你依然会用到append之类的填充。

4.填充完后你还需要一个确认下载的按钮,需要判断是否选中路径。多个或一个。自行处理。

5.点击这个确认下载,需要做后续的下载工作。

 

贫民窟大侠 | 园豆:4270 (老鸟四级) | 2017-01-13 15:46

是button,是这样的,服务器在另一个地方,我知道一个文件放在服务器的哪个目录下,获取到文件列表后我选择需要下载的文件,选中后点击下载按钮,然后弹出设置保存路径的对话框,选择路径确认后就会向服务器发送一个需要下载的文件在服务器里保存的路径,和需要下载到本地的路径,然后开始下载,我说明白了吗?文件不在我的电脑上,在另一个服务器里,我只能获取它的存放路径,我怎么能下载到本地的指定目录?

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 09:50
0

浏览器默认会打开下载器的。你只需要写<a href="文件地址"></a>就好了,何必这么麻烦。至于弹窗,建议使用Layer这个插件,很好用

大师兄丶 | 园豆:843 (小虾三级) | 2017-01-13 16:47

是这样的,文件不在本机,在另一台服务器上,我只能获取文件在服务器的存放路径,而且是复选框,就是一次可以下载多个文件,获取到文件列表(就是各个文件在服务器的存放路径)后我选择需要下载的文件,选中后点击下载按钮,然后弹出设置保存路径的对话框,选择路径确认后就会向服务器发送一个需要下载的文件在服务器里存放的路径,和需要下载到本地的路径,然后开始下载,我说明白了吗?文件不在我的电脑上,在另一个服务器里,我只能获取它的存放路径,我怎么能下载到本地的指定目录?

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 09:53

@我叫乾乾: 多个文件建议打包下载。。下载方法的人话就用流噻,给你个工具类吧

/// <summary>
        /// Http下载文件
        /// </summary>
        /// <param name="url">文件地址Url</param>
        /// <param name="path">下载成功后文件存放的本地路径</param>
        public static bool HttpDownloadFile(string url, string path)
        {
            try
            {
                // 设置参数
                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                //发送请求并获取相应回应数据

                if (request != null)
                {
                    request.AllowAutoRedirect = true;
                    request.CookieContainer = cookie;
                    request.Timeout = 30 * 1000;
                    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                    if (response != null && (response.StatusCode == HttpStatusCode.NotFound ||
                                             response.StatusCode == HttpStatusCode.InternalServerError ||
                                             response.StatusCode == HttpStatusCode.GatewayTimeout))
                    {
                        return false;
                    }
                    else
                    {
                        string encoding = response.ContentEncoding;
                        if (encoding == null || encoding.Length < 1)
                        {
                            encoding = "UTF-8"; //默认编码  
                        }

                        //直到request.GetResponse()程序才开始向目标网页发送Post请求
                        try
                        {
                            Stream responseStream = response.GetResponseStream();
                            //创建本地文件写入流

                            Stream stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                            byte[] bArr = new byte[1024];

                            if (responseStream != null)
                            {
                                int size = responseStream.Read(bArr, 0, (int)bArr.Length);

                                while (size > 0)
                                {
                                    stream.Write(bArr, 0, size);
                                    size = responseStream.Read(bArr, 0, (int)bArr.Length);
                                }
                            }
                            stream.Close();
                            if (responseStream != null) responseStream.Close();
                            response.Close();
                            request.Abort();

                            return true;
                        }
                        catch (Exception exception)
                        {
                            Logger.Error(exception.ToString());
                            request.Abort();
                            return false;
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Logger.Error(exception.ToString());
                return false;
            }
            return false;
        }
支持(0) 反对(0) 大师兄丶 | 园豆:843 (小虾三级) | 2017-01-16 10:32

@大师兄丶: 好像跟我的需求不太一样,不过非常感谢了!

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 11:03
0

可以用bootstrap的模态框。具体使用方法可以参考我的博客。

轨迹yys | 园豆:202 (菜鸟二级) | 2017-01-14 09:48

重点不是弹出框,而是那个下载的动作。

是这样的,文件不在本机,在另一台服务器上,我只能获取文件在服务器的存放路径,而且是复选框,就是一次可以下载多个文件,获取到文件列表(就是各个文件在服务器的存放路径)后我选择需要下载的文件,选中后点击下载按钮,然后弹出设置保存路径的对话框,选择路径确认后就会向服务器发送一个需要下载的文件在服务器里存放的路径,和需要下载到本地的路径,然后开始下载,我说明白了吗?文件不在我的电脑上,在另一个服务器里,我只能获取它的存放路径,我怎么能下载到本地的指定目录?

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 09:56
0

用bootstrap框架,里面就有弹出框插件,简单的狠,我这个上面就用的。http://www.ofmonkey.com/

独孤飞 | 园豆:283 (菜鸟二级) | 2017-01-16 08:46

重点不是弹出框,而是那个下载的动作。

是这样的,文件不在本机,在另一台服务器上,我只能获取文件在服务器的存放路径,而且是复选框,就是一次可以下载多个文件,获取到文件列表(就是各个文件在服务器的存放路径)后我选择需要下载的文件,选中后点击下载按钮,然后弹出设置保存路径的对话框,选择路径确认后就会向服务器发送一个需要下载的文件在服务器里存放的路径,和需要下载到本地的路径,然后开始下载,我说明白了吗?文件不在我的电脑上,在另一个服务器里,我只能获取它的存放路径,我怎么能下载到本地的指定目录?

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 09:56

@我叫乾乾: 这不是普通的文件下载么,有文件网址还不好下载?

支持(0) 反对(0) 独孤飞 | 园豆:283 (菜鸟二级) | 2017-01-16 10:14

@独孤飞: 是有复选框的,就是可以选中多个文件,然后点击下载,将这几个文件的路径发送给后台,然后做下载的动作。

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 10:42
0

给你个参考吧,http://www.17sucai.com/pins/demoshow/12677

程序新青年 | 园豆:841 (小虾三级) | 2017-01-16 09:58

 嗯嗯,谢谢了,这个弹出框的例子很好。

支持(0) 反对(0) Oven5217 | 园豆:18 (初学一级) | 2017-01-16 13:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册