【发布时间】:2019-04-15 17:23:36
【问题描述】:
我正在尝试从已存在文件的 file/JOHN 目录加载 3 个文件。
文件采用以下格式。假设它们位于以下位置(在file/JOHN 文件夹内):C:/john/file/JOHN/
file1_1555077233.csv
file2_1555077233.csv
file3_1555077233.csv
因为我是在我的 Windows 机器上测试它,所以我将它放在这个位置 C:/john/file/JOHN/。但是,最终,在 RHEL 服务器上,它会变成这样的/srv/users/JOHN/,所以我使用 Windows 机器上的用户目录来进行测试。
文件未显示在文本区域中。但是,一旦我单击按钮,文本区域会在 1 秒后显示。我做错了什么?
点击Download File 按钮后,下面的代码会在 1 秒后显示一个文本区域。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8"/>
<title>LoadFiles</title>
<link rel="stylesheet" href="built/style.css"/>
<script type="text/javascript">
var interval;
function loadFiles() {
interval = setInterval(displayTextArea, 1000);
}
function displayTextArea() {
console.log(new Date() + " ");
document.getElementById("downloadtextArea").innerHTML =
'<textarea maxlength="500" cols="30" rows="5"></textarea>';
const requests = [
'file1_1555077233.csv',
'file2_1555077233.csv ',
'file3_1555077233.csv'
].map(file => {
return fetch('file:///C:/john/file/JOHN/' + file)
.then(response => response.text())
.catch(console.error)
})
Promise.all(requests)
.then(contents => contents.join('\n'))
.then(content => {
//container.innerHTML = `<textarea>${content}</textarea>`
content.innerHTML = `<textarea>${content}</textarea>`
})
clearInterval(interval);
}
</script>
</head>
<body>
<button id="downloadFileButton" onclick="loadFiles()">Download File</button>
<div id ="downloadtextArea"></div>
</body>
</html>
我执行的故障排除步骤:
在浏览器中复制如下路径:
file:///C:/john/file/JOHN/file1_1555077233.csv 我看到了文件
【问题讨论】:
-
console.log(contents)你看到了什么 -
@IsaacVidrine 我看到列名打印了 3 次,它们出现在 CSV 文件
"Column1","Column2","Column3","Column4"中。我在这一行上方使用了`console.log(content);`content.innerHTML =`` -
content是来自响应的数据,所以content.innerHTML当然什么也不做。你需要类似document.getElementById('mycontentarea').innerHTML = content -
@Issac Vidrine 好的。你能告诉我你到底要我在上面的代码中把
console.log(contents)放在哪里吗?另外,这个document.getElementById('mycontentarea').innerHTML = content应该去哪里?谢谢 -
content是您请求加载文件的响应。您应该注销它们的值以查看它们是什么。获得所需数据后,将该数据附加到页面上的标记中。
标签: javascript html file textarea