我们平常用VB下载一般都是要指定下载地下,然后指定下载到本机的文件名这种形式,我现在想要的是下载下来的文件不要指定文件名,而是要保持原来的文件名。因为网址是这种形式的:www.jump.baidu.com/sds.aspx?sn=007这种,用浏览器打开这个下载地址后会弹出另存为对话框,名字有时是1.exe,有时是2.exe等等不是固定的,是随机的,每一次用浏览器打开弹出另存为对话框后文件名都不同。有什么方法用VB下载但文件名保持默认的呢?网上查了一下说分割这个网址的"/"和“?”之间的字符就是真实的文件名,参考资料:"从URL中获取文件名,从左到右找到最后一个“/”字符,再从这个字符开始找到第一个“?”字符,如果没有这个字符则整串为文件名;如果有则取“/”与“?”之间的字符串作为文件名"
另外有一贴子和我问的问题差不多相同,但是用C++做的,我不会转成VB,所以无法验证,贴子如下:
应用System.Net 和System.IO命名空间
HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create( http://www.k2yx.com/job.php?action=download&aid=200);
hwr.GetResponse();
string fileName = Path.GetFileName(hwr.Address.ToString());
fileName 就是取到的文件名了。
以上是C#的写法,你转成VB的写法应该很简单
还有一段代码,问群里的人说以下这段代码只要在对像关闭前取出下载的文件名就可以,代码如下:
Private Sub DownNetFile(ByVal nUrl As String, ByVal nFile As String)
Dim
XmlHttp, B() As Byte
Set XmlHttp =
CreateObject("Microsoft.XMLHTTP")
XmlHttp.Open "GET", nUrl,
False
XmlHttp.Send
If XmlHttp.ReadyState = 4 Then
B() = XmlHttp.ResponseBody
Open nFile For Binary As #1
Put #1, , B()
Close #1
End If
Set XmlHttp =
Nothing
End Sub
我是新手,实在是不懂,请各位大侠帮帮忙,给出代码,总结我的目的就是:用VB下载一个文件并保持原来的文件名!
你这个转成的是NET的吧,VB6的我才看得懂
追答呃,手头没有VB6(64位Win7不兼容),只有.net的,所以没办法帮你测试VB6的代码了,我先研究研究。
不过我看你题中说的那个【从URL中获取文件名,从左到右找到最后一个“/”字符,再从这个字符开始找到第一个“?”字符,如果没有这个字符则整串为文件名;如果有则取“/”与“?”之间的字符串作为文件名】挺好的呀:
Dim myURL As String
Dim myFileName As String
myURL = "文件下载的URL地址"
myFileName = Trim(Right(myURL), InStr(StrReverse(myURL), "/") - 1))
这是没有 "?” 的情况,有 "?" 也好解决,用 Mid 函数就可以,时间关系我要陪女朋友出去了,不写了,题主可以自己琢磨琢磨, 不懂欢迎继续问。
取中间的字符我知道,但不知怎么保持原来的文件名,
VB怎么下载文件同时保持原来的名字?
Dim fileName As String = System.IO.Path.GetFileName(hwr.Address.ToString())
用VB 实现 另存为时默认文件名 与 已存在的文件名重复 则提示错误
Dim strRet as string Dim PathFileName as string PathFileName="C:\\xxx.ini"strRet = Dir$(PathFileName, vbNormal)If Len(strRet) <> 0 Then MsgBox "存在"Else MsgBox "不存在"End If Dir() 检查文件是否存在,不存在返回空串;存在返回文件信息 可根据第二个参数调整。
文件夹内部文件保存名字自动全部一样,保存下一个要改之前的文件名称
下面几个步骤可以给你做参考: 1. 你可以先新建一个Excel表格名称:A.xlsx 2. 在A中点击查看宏,输入宏的名称(如:另存为),点击创建 3. 在跳出的VB窗口中,将下面代码复制进去,然后关闭VB窗口 Sub 另存为()Dim wb As WorkbookDim s As WorksheetFor Each wb In Workbooks If wb.Name <...
vb中如何设置保存对话框中的默认文件名
CommonDialog1.Filter = "Text (*.txt)|*.txt"CommonDialog1.FileName = "ceshi"CommonDialog1.ShowSave
vb怎么保存程序
最好为这个工程建个文件夹,点击保存工程,工程文件的后缀为:.vbp。文件名显示在工程文件窗口的标题栏中。包含下列三类主要文件:1、窗体文件(.Frm):存储窗体上使用的所有控件对象、属性、事件过程及程序代码。2、标准模块文件(.Bas):所有模块级变量和用户自定义的通用过程。3、类模块文件(.Cls):...
VB如何做到对文件只改文件名不该后缀名
保存后缀名,修改文件名后把原先的后缀名再附加上去
VB6.0中如何实现打开一个文件并保存
VB6.0使用CommonDialog 控件弹出对话框选择文件路径。通过使用 CommonDialog 控件的 ShowOpen 和 ShowSave 方法可显示“打开”和“另存为”对话框。两个对话框均可用以指定驱动器,目录,文件扩展名和文件名。除对话的标题不同外,另存为对话外观上与打开对话相似。下例显示“打开”对话框然后在信息框中...
vb 我想把窗体名字改了 但一改就用不了了 怎么办
如果是,那么你首先要在工程中移除这个窗体,然后修改文件名,最后再在工程中把这个改名后的窗体文件添加进来即可。你也可以用记事本打开工程文件(就是图中的第二个文件),找到那个窗体文件名,直接改掉也行(不过如果你是菜鸟就不建议你这样改)。如果是指窗体的Name属性(即属性窗口中的那个“(名称)...
vb 怎么复制已经打开的文件啊
复制应该不成问题,直接复制就可以了,代码如下 Set fso=CreateObject("scripting.filesystemobject")Set fs=fso.GetFile("d:\\aa.txt")'里面输入需要复制的文件路径 fs.Copy("d:\\aa\\")'里面输入目标的文件夹名字,记得后面有一“\\”
VB找出的某个文件标题名字与自己程序上的Text.text名字一样的怎么判断...
API函数返回的窗体标题是一段内存缓冲区的拷贝,它和VB内部的标准字符串是有所不同的,就是说它在“记事本”的后面还有其他不可见的字符,如Chr(0)(就是ASCII码为0的字符),所以你判断一下它们的长度会发现是不相等的:MsgBox "bt变量的长度=" & Len(bt) & " Text1.Text的长度=" & Len(...