相关疑难解决方法(0)

JavaScript:创建并保存文件

我有要写入文件的数据,并打开文件对话框供用户选择保存文件的位置.如果它适用于所有浏览器会很棒,但它必须在Chrome中运行.我想在客户端做到这一点.

基本上我想知道在这个函数中放什么:

saveFile: function(data)
{
}
Run Code Online (Sandbox Code Playgroud)

在函数接收数据的情况下,用户是否选择保存文件的位置,并使用该数据在该位置创建文件.

使用HTML也很好,如果有帮助的话.

javascript dialog file save

246
推荐指数
11
解决办法
63万
查看次数

使用ajax请求下载文件

我想点击按钮时发送"ajax下载请求",所以我试着这样做:

JavaScript的:

var xhr = new XMLHttpRequest();
xhr.open("GET", "download.php");
xhr.send();
Run Code Online (Sandbox Code Playgroud)

的download.php:

<?
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename= file.txt");
header("Content-Transfer-Encoding: binary");    
readfile("file.txt");
?>
Run Code Online (Sandbox Code Playgroud)

但是没有按预期工作,我该怎么办?先感谢您

javascript php ajax file download

87
推荐指数
5
解决办法
27万
查看次数

如何使用javascript从Web服务返回的二进制字符串构建PDF文件

我试图从二进制流构建一个PDF文件,我收到它作为Ajax请求的响应.

通过XmlHttpRequest我收到以下数据:

%PDF-1.4....
.....
....hole data representing the file
....
%% EOF
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试的是通过嵌入我的数据data:uri.现在,它没有任何问题,它工作正常.不幸的是,它在IE9和Firefox中不起作用.可能的原因可能是FF和IE9在使用时遇到了问题data-uri.

现在,我正在寻找适用于所有浏览器的解决方案.这是我的代码:

// responseText encoding 
pdfText = $.base64.decode($.trim(pdfText));

// Now pdfText contains %PDF-1.4 ...... data...... %%EOF

var winlogicalname = "detailPDF";
var winparams = 'dependent=yes,locationbar=no,scrollbars=yes,menubar=yes,'+
            'resizable,screenX=50,screenY=50,width=850,height=1050';

var htmlText = '<embed width=100% height=100%'
                     + ' type="application/pdf"'
                     + ' src="data:application/pdf,'
                     + escape(pdfText)
                     + '"></embed>'; 

                // Open PDF in new browser window
                var detailWindow = window.open ("", winlogicalname, winparams);
                detailWindow.document.write(htmlText);
                detailWindow.document.close();
Run Code Online (Sandbox Code Playgroud)

正如我所说,它适用于Opera和Chrome(Safari尚未经过测试).使用IE或FF将显示一个空白的新窗口.

是否有任何解决方案,如在文件系统上构建PDF文件,以便让用户下载它?我需要适用于所有浏览器的解决方案,至少在IE,FF,Opera,Chrome和Safari中.

我无权编辑Web服务实现.所以它必须是客户端的解决方案.有任何想法吗?

javascript pdf jquery cross-browser binary-data

46
推荐指数
4
解决办法
9万
查看次数

如何在没有FileReader的情况下从Blob和File对象创建ArrayBuffer和数据URI?

此问题与旧浏览器中如何更新(与Safari 5.1.4相关)有关并受其启发

给定一个<input type="file">具有元件files包含属性File从继承的对象Blob,是有可能创造一个ArrayBuffer和转换ArrayBuffer到一个data URI从一个BlobFile对象,而无需使用FileReader

到目前为止已尝试过方法

  • WebSocket使用.binaryTypeset 创建一个mock "arraybuffer",创建一个MessageEventwith event.dataset to Fileobject; 结果是处理程序的File对象onmessage

  • 设置原型FileArrayBuffer,Uint8Array; 结果是Uncaught TypeError: Method ArrayBuffer.prototype.byteLength called on incompatible receiver #<ArrayBuffer>(),Uncaught TypeError: Method get TypedArray.prototype.byteLength called on incompatible receiver [object Object]()

  • 设置File在 …

javascript blob fileapi typed-arrays data-uri

12
推荐指数
1
解决办法
2806
查看次数

使用javascript下载大数据流(> 1Gb)

我想知道是否有可能将数据从javascript流式传输到浏览器的下载管理器.

使用webrtc,我将数据(从文件> 1Gb)从浏览器传输到另一个.在接收器端,我将所有这些数据存储到内存中(作为arraybuffer ...所以数据基本上仍然是块),我希望用户能够下载它.

问题: Blob对象的最大大小约为600 Mb(取决于浏览器),因此我无法从块中重新创建文件.有没有办法流式传输这些块,以便浏览器直接下载它们?

javascript blob webrtc

12
推荐指数
2
解决办法
1万
查看次数

从ajax响应中下载pdf文件

我正在尝试让浏览器下载从ajax响应中收到的pdf文件.

灵感来自使用jquery ajax下载pdf文件我模拟了这样的点击/下载事件:

    var req = new XMLHttpRequest();
    req.open("POST", "/servicepath/Method?ids=" + ids, true);
    req.responseType = "blob";
    req.onreadystatechange = function () {
        if (req.readyState === 4 && req.status === 200) {
            var blob = req.response;
            var link = document.createElement('a');
            link.href = window.URL.createObjectURL(blob);
            link.download = "PdfName-" + new Date().getTime() + ".pdf";
            link.click();
        }
    };
    req.send();
Run Code Online (Sandbox Code Playgroud)

不幸的是,这仅适用于Chrome,但不适用于Firefox + IE.当我尝试在最后两个浏览器中触发它时没有任何反应.

该脚本和标记被放置在iframe中,由于从CMS继承,但我不知道是否有任何影响的.

如何为所有现代浏览器优化它?

javascript pdf ajax jquery

10
推荐指数
2
解决办法
3万
查看次数

从完整形成的响应触发大文件下载

问题

我有一个 Node.js 端点,当使用以下命令访问时,它会正确触发任意大的文件下载:

response.setHeader('Content-disposition', 'attachment; filename=' + fileName);
response.set('Content-Type', 'text/csv');
response.status(200);
result.pipe(response);
Run Code Online (Sandbox Code Playgroud)

其中result变换流responseExpress 对象

当直接访问 Chrome、Firefox、Internet Explorer 等中的端点时,此方法工作正常。问题是在启用基于令牌的身份验证时尝试访问端点而产生的。

从用户的角度来看,当他们单击按钮时,就会下载文件。

如何使按钮使用请求标头中的正确身份验证令牌命中此端点并导致下载文件?

集思广益一些可能的方法

  1. 当用户单击该按钮时,它会触发由 redux-api-middleware 处理的操作,该操作GET向端点发出请求(身份验证令牌自动包含在请求中)。该中间件将响应保存在一个变量中,该变量由 React 组件获取。在此 React 组件中,如果正在使用的浏览器(即 Chrome 和 Opera)支持流,response.body则会存在,因此您可以执行如下操作。

    if (response.body) {
        const csvReader = response.body.getReader();
        const textDecoder = new TextDecoder();
        const processCsvRow = (csvRow) => {
            if (csvRow.done) {
                console.log('Finished downloading file.');
                return Promise.resolve();
            }
    
            // Write to new file for user to download …
    Run Code Online (Sandbox Code Playgroud)

node.js express jwt http-token-authentication react-redux

5
推荐指数
1
解决办法
2701
查看次数

使用 javascript 将 DOM 保存为 xml 文件

在我的 javascript 中,我有以下内容:

let person = document.createElement('person');
let name = document.createElement('name');
let surname = document.createElement('surname');
person.appendChild(name);
person.appendChild(surname);

let xml = person;
Run Code Online (Sandbox Code Playgroud)

如何将“xml”变量保存在文件中(仅使用 javascript)?OBS:内容不应以单行形式呈现,而应以树状结构呈现:

<person>
    <name></name>
    <surname></surname>
</person>
Run Code Online (Sandbox Code Playgroud)

javascript xml dom

5
推荐指数
1
解决办法
3930
查看次数

使用跨浏览器兼容的 JavaScript 下载 PDF

我可以在 Chrome 中使用 AngularJS 下载 PDF,但这似乎不适用于最新的 FireFox、Internet Explorer 11 或 Edge(假设它也不适用于 IE10),而且我知道IE9 需要垫片。如果有人有意见,不知道这是否是最好的垫片,但目前它似乎不起作用。我有一个应答式的试了一下blob,并arraybuffer只是在做一个差的情况下,它没有。

所有这些都与caniuse指示的使用 Blob URL相悖。任何人都可以在 IE9 及更高版本以及 FF 的最后几个版本中使用它,并且可以指出我做错了什么?

$http({
    url: '/api/v1/download',
    method: 'GET',
    responseType: 'blob' // or 'arraybuffer'
}).then(function (response) {

    // Use the Blob object to create an object URL to download the file
    var url = URL.createObjectURL(response.data);
    // var url = URL.createObjectURL(new Blob([response], {type: 'application/pdf'})); // arraybuffer version

    // Create an anchor to perform download, but …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-1.5

4
推荐指数
1
解决办法
3449
查看次数