在JavaScript中从没有它的URL获取文件名

时间:2013-04-11 10:33:47

标签: javascript string cordova download

如何从PhoneGap中的给定URL获取文件名?

在JavaScript中,我使用过这样的东西:

var uri = encodeURI("http://www.openerpspain.com/descargas-documentacion?download=2");

我的应用程序下载文件,但我必须手动设置文件名。为了说明,当我打电话

onclick="descarga('http://www.openerpspain.com/descargas-documentacion?download=2')"

运行此功能:

function descarga(URL){
    var rutaarchivo = "file:///sdcard/data/com.protocolo/test1.pdf";
    alert(rutaarchivo);
    var filetransfer = new FileTransfer();
    filetransfer.download(URL, rutaarchivo,
        function(entry){
          alert("Download complete : " + entry.fullPath);
        },function(error) {
          alert("download error source " + error.source);
        });
}

这会将下载保存到../com.protocolo,其文件名为test.pdf。我希望能够将其保存为服务器上的名称(* manual_openerp.230209.pdf *),在真实的 URL,* ... // www.openerpspain.com /descargas/manual_openerp.230209.pdf *

我该怎么做?

4 个答案:

答案 0 :(得分:2)

String fileName = url.substring(url.lastIndexOf('/') + 1);

其中url是文件的完整路径。

答案 1 :(得分:2)

使用:

url="file:///sdcard/data/com.protocolo/test1.pdf?getVar=value";
url.replace(/\?.*$/,"").replace(/.*\//,"");

答案 2 :(得分:0)

这基本上是在问How to get the file name from a full path using JavaScript?。在这里,解决方案是:

var filename = url.replace(/^.*[\\\/]/, '');

答案 3 :(得分:0)

我在网址参数中添加了。然后在PhoneGap我用过:

function getParameterByName( name,href ){
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( href );
    if( results == null )
      return "";
    else
      return decodeURIComponent(results[1].replace(/\+/g, " "));
}

来自:

var filename = getParameterByName ("nombrefichero", url);

所以我可以通过以下方式获得example.pdf:

http://www.download.com/fake/example.pdf?nombrefichero=example.pdf

然后我可以下载它,并将其保存在我想要的地方。