当强制通过window.location下载时,如何在JavaScript中设置blob文件的名称?
function newFile(data) {
var json = JSON.stringify(data);
var blob = new Blob([json], {type: "octet/stream"});
var url = window.URL.createObjectURL(blob);
window.location.assign(url);
}
Run Code Online (Sandbox Code Playgroud)
运行上面的代码会立即下载文件而不会刷新页面,如下所示:
bfefe410-8d9c-4883-86c5-d76c50a24a1d
我想将文件名设置为my-download.json.
我需要在客户端为生成的文本数据添加UTF-8字节顺序标记.我怎么做?
当然,使用new Blob(['\xEF\xBB\xBF' + content])产量'"my data"'.
也没有'\uBBEF\x22BF'工作('\x22' == '"'成为下一个角色content).
是否可以将JavaScript中的UTF-8 BOM添加到生成的文本中?
是的,在这种情况下我确实需要UTF-8 BOM.
我已经按照这篇文章如何将JavaScript数组信息导出到csv(在客户端)?获取嵌套的js数组写为csv文件.
该数组看起来像:
var test_array = [["name1", 2, 3], ["name2", 4, 5], ["name3", 6, 7], ["name4", 8, 9], ["name5", 10, 11]];
Run Code Online (Sandbox Code Playgroud)
链接中给出的代码很好地工作,除了在csv文件的第三行之后所有其余值都在同一行上,例如
name1,2,3
name2,4,5
name3,6,7
name4,8,9name5,10,11等
任何人都可以解释为什么会这样吗?使用Chrome或FF也是如此.
谢谢
编辑
jsfiddle http://jsfiddle.net/iaingallagher/dJKz6/
伊恩
我刚开始使用Flask/Python.我想要实现的是我的HTML中有一个下载按钮,它调用以下函数:
function downloadPlotCSV() {
$.ajax({
url: "/getPlotCSV",
type: "post",
success: function(data) {
dataPlot = JSON.parse(data);
console.log(dataPlot);
}
});
}
Run Code Online (Sandbox Code Playgroud)
不完整的烧瓶代码是:
@app.route('/getPlotCSV', methods = ['POST'])
def plotCSV():
data = open("outputs/Adjacency.csv")
Run Code Online (Sandbox Code Playgroud)
我面临的问题是我找不到下载此csv文件或将其作为JSON字符串返回的方法,因此我可以使用Javascript下载它.知道如何将其作为JSON发送或者通过Flask本身下载它吗?什么是最好的方式?
我运行一个iPython Notebook服务器,并希望用户能够将pandas数据帧下载为csv文件,以便他们可以在自己的环境中使用它.没有个人数据,所以如果解决方案涉及在服务器上写入文件(我可以做),然后下载该文件,我会很高兴.
上面的粗线是那个不起作用的线,我正试图想出来.以下是该文章的相关HTML和javascript:
<button type="button" class="btn btn-primary" id="transform">
<span class="glyphicon glyphicon-wrench"></span>
Transform Uploaded Files
</button>
<a id="test_dl" href="" download="user_download.zip">
Download File
</a>
$('#transform').click(function (e) {
$.getJSON('/transform', {}, function (final_zip){
var zipfile = "file://" + final_zip.zip_filename
$('a#test_dl').attr("href", zipfile)
});
});
Run Code Online (Sandbox Code Playgroud)
用户单击"转换上载的文件"按钮,然后将href更新为生成的zipfile位置,然后通过单击"下载文件"HTML下载生成的包.
到目前为止,我已经在Chrome中对此进行了测试并使用了开发人员控制台,我可以看到在点击下载按钮之前href正在正确更新,但它总是会出现"失败 - 网络错误"对话框.奇怪的是,当我点击"显示所有下载"然后点击失败的下载时,它就成功完成了.
编辑:我应该补充一点,这个后端目前正在Python的Flask上运行
我正在使用本地浏览器内数据库来存储数据.但是,我想让用户能够将该数据导出为CSV.
谷歌搜索时我发现了数据网址的解决方案 - 用数据准备网址.但是在我的情况下,每次呈现页面(链接)时都会生成> 1MB的数据.是否有任何替代解决方案可以让我从JavaScript生成文件下载,但不要求我提前准备内容 - 只有当用户实际点击链接时?
如果它很重要我正在使用React来构建我的应用程序..
我需要将javascript数组导出到CSV文件并下载它.我做了但是'ı,ü,ö,ğ,ş'这些字符在CSV文件中看起来像'ıÃÃÄŸÅŸ'.我尝试过在本网站上推荐的许多解决方案,但对我不起作用.
我添加了我的代码片段,任何人都可以解决这个问题吗?
var csvString = '?,ü,ö,?,?';
var a = window.document.createElement('a');
a.setAttribute('href', 'data:text/csv; charset=utf-8,' + encodeURIComponent(csvString));
a.setAttribute('download', 'example.csv');
a.click();Run Code Online (Sandbox Code Playgroud)
我有一系列使用display:table,table-row和table-cell规则以整洁的表格格式组织的div.它看起来很棒,但我被要求支持想要复制文本并粘贴到excel的用户.在过去,我们有类似的报告,在简单的html表(tr,td等)中呈现,我想excel知道如何处理它以适当地引入它,但对于样式的div他们只做一个长列(这对于有用的报告来说并不完全理想).
是否可以在不使用html表的情况下执行此操作?
我的问题很简单"有可能吗?".我已经有了另一种解决方案,如果有更好的方法,我只是不想走这条路.
<!DOCTYPE html>
<html>
<head>
<title> </title>
<meta charset=utf-8>
</head>
<body>
<table>
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
</tr>
<tr>
<td>Line #1</td>
<td>SLTD</td>
<td>32</td>
</tr>
<tr>
<td>Line #2</td>
<td>MKTD</td>
<td>68</td>
</tr>
<tr>
<td>Line #3</td>
<td>LRTD</td>
<td>55</td>
</tr>
<tr>
<td>Line #4</td>
<td>HAD</td>
<td>47</td>
</tr>
</table>
<button>Export to text file</button>
<script>
var theFirstChilds = document.querySelectorAll('table tr td:first-of-type'), text, i;
text = "";
for (i = 0; i < theFirstChilds.length; ++i) {
text = text + theFirstChilds[i].innerText;
}
console.log(text);
var button = document.getElementsByTagName("button")[0];
button.addEventListener("click", function() {
//alert("I …Run Code Online (Sandbox Code Playgroud)