Javascript 如何在jquery中设置文件名

Javascript 如何在jquery中设置文件名,javascript,jquery,download,client-side,Javascript,Jquery,Download,Client Side,(这个标题可能不太清楚,但无论你在这里读到什么,都是为了通过“质量标准”脚本的改进,根据选择的标签,这个脚本似乎要严格得多) 在客户端,jquery中是否有任何方法可以设置下载文件的名称 假设在我的服务器上,该文件存储为QXYZO123,但该文件实际上是information.xls,一个电子表格。甚至超链接也显示information.xls,因为我有将随机文件名链接到原始文件名的信息 当用户单击链接时,默认情况下,它将尝试下载存储在服务器上的文件名QXYZO123,但我希望它改为inform

(这个标题可能不太清楚,但无论你在这里读到什么,都是为了通过“质量标准”脚本的改进,根据选择的标签,这个脚本似乎要严格得多)

在客户端,jquery中是否有任何方法可以设置下载文件的名称

假设在我的服务器上,该文件存储为
QXYZO123
,但该文件实际上是information.xls,一个电子表格。甚至超链接也显示information.xls,因为我有将随机文件名链接到原始文件名的信息

当用户单击链接时,默认情况下,它将尝试下载存储在服务器上的文件名QXYZO123,但我希望它改为information.xls,我如何设置它以建议保存为的文件名


我称之为建议,因为根据用户的浏览器设置,它将使用我的文件名建议自动下载,或者使用文件名建议询问用户下载并保存到哪里,JQuery没有直接设置文件属性。JQuery表示一些Javascript代码,Javascript是客户端脚本语言。这意味着您可以做一些事情,只在客户端,而不是服务器端

但是有一些间接的方法可以做到这一点。首先,唯一的方法是在服务器端设置文件名。这取决于您在服务器端使用的语言。根据服务器端语言,您可以编写自己的下载web api。将文件名作为请求参数传递给api,并让它为您提供具有自定义文件名的文件。我不知道您在服务器端使用的是什么语言,但我使用node.js编写了一个服务器端代码,它接受“GET”请求中的自定义文件名作为参数

var sys = require ('sys'),
url = require('url'),
http = require('http'),
qs = require('querystring');
var path = require('path');
var mime = require('mime');
var fs = require('fs');

var server=http.createServer(

function (request, response) {

      if(request.method=='GET') {
        var filePath='path_to_your_file_in_your_server_file_system';
        var filestream = fs.createReadStream(filePath);
        var url_parts = url.parse(request.url,true);
        console.log(url_parts);
        var fileName= url_parts.query.fileName; //Taking your customized file name from GET request parameters.
        if(!fileName)
        {
            fileName=path.basename(filePath);
        }

        var mimetype = mime.lookup(filePath);
        response.setHeader('Content-disposition', 'attachment; filename=' + fileName);
        response.setHeader('Content-type', mimetype);
        filestream.pipe(response);


        response.writeHead( 200 );

        response.end();
    }               
}
);

server.listen( 9080 );
当您使用node.js运行此服务器代码时,您可以从url中获取具有自定义文件名的文件,该url
localhost:9080?fileName=yourcomizedfilename
。如您所见,我们在url中提供文件名“GET”请求参数。您可以使用javascript windows.location或其他方法在客户端javascript代码上获取带有自定义文件名的文件。 不要让node.js代码让您感到困惑。解决方案的要点是编写一个下载api,该api从“GET”请求中获取fileName参数,以将具有此名称的文件发送给客户端


您可以将此node.js代码应用于服务器端语言,或者研究如何应用它。很可能,找到并应用它并不困难。

您不能这样做,但在服务器端将文件名更改为其他文件名是很简单的。