aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 8310|回复: 3

怎样知道httpfile下载的文件名?

[复制链接]

30

主题

60

回帖

655

积分

新手入门

积分
655
发表于 2013-9-22 11:48:58 | 显示全部楼层 |阅读模式
好像httpfile下载文件后,要求自定义文件名,如果不想自定义,就用原来的文件名,应该怎么办?

9

主题

443

回帖

2546

积分

版主

积分
2546
发表于 2013-9-22 12:50:26 | 显示全部楼层
httpfile即然规定你必须写你不想写也得写啊,不想写可以先取件名。不过服务器不保证一定会提供你一个文件名、URL里也不一定会包含文件名,所以如果你想做比较通用的东西,还是必须自己指定文件名。
  1. import inet.whttp;
  2. getFileName = function(url){
  3.         var http = inet.whttp();
  4.         http.beginRequest(url);
  5.         http.send()
  6.         var h = http.readHeaderContent();
  7.         var filename = h ? h.disposition ?  h.disposition.filename;
  8.         http.close()
  9.        
  10.         if( !filename ){
  11.                 var turl = inet.url.split(url);
  12.                 if(!turl) return;
  13.                 var tpath = io.splitpath( turl.path )
  14.                 return tpath.file;
  15.         }
  16.         return filename       
  17. }

  18. import console
  19. filename = getFileName("http://oss.aardio.com/aardio/ide/aardio.zip")
  20. console.log( filename )
复制代码

9

主题

443

回帖

2546

积分

版主

积分
2546
发表于 2013-9-22 12:53:57 | 显示全部楼层
inet.httpFile 的设计意图很明显,他是一个很轻量的实现,用来下载那种你预先知道文件名的文件,
如果不是这样,这个库并不适合你。如果你自动取到两个同名但实际不同的文件就会冲突,所以你要做这种自动取文件名的下载不适合用这个库。

当然 inet.httpFile 也是调用inet.whttp实现的没几句代码,你可以根据需要自己扩展库。aardio给了你灵活扩展的机会。

30

主题

60

回帖

655

积分

新手入门

积分
655
 楼主| 发表于 2013-9-22 14:38:58 | 显示全部楼层
好的,谢谢版主的回答。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-3-20 03:24 , Processed in 0.120304 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表