JavaScript File构造函数fileParts参数解析及Flask应用文件读取报错解决
问题解决思路及代码修正
错误原因分析
你当前的代码完全用错了API:
File构造函数是用来在浏览器端创建文件对象的,不是读取服务器/本地文件路径的。它要求至少两个参数:第一个fileParts是组成文件内容的片段数组(比如字符串、Blob、BufferSource等,用来拼接成文件内容),第二个是文件名,所以只传路径必然报错。FileReader只能读取浏览器内存中的文件对象(比如用户上传的文件),无法直接访问服务器或本地文件系统的文件路径——浏览器的安全机制不允许这么做。
正确实现方案
要读取服务器上的令牌文件,得通过Flask后端提供接口,前端用网络请求获取内容。
1. Flask后端添加接口
在你的Flask应用中新增一个接口,用来返回令牌文件的内容:
from flask import Flask, send_file app = Flask(__name__) # 注意:确保文件路径相对于Flask应用的运行目录是正确的 @app.route('/get-access-token') def get_access_token(): return send_file('../../data/Authorisation.txt', mimetype='text/plain')
2. 前端JavaScript修正代码
用fetch请求后端接口获取内容,因为是异步操作,要使用async/await处理:
async function getAccessToken() { try { // 请求后端接口 const response = await fetch('/get-access-token'); // 读取返回的文本内容 const tokenText = await response.text(); // 截取第14位之后的内容 return tokenText.substring(14); } catch (err) { console.error('获取访问令牌失败:', err); return null; } }
关于fileParts参数的补充说明
如果确实需要在浏览器端创建文件对象(比如生成一个下载文件),fileParts才会用到,举个例子:
// 创建一个包含指定文本的文件对象 const file = new File(['这里是文件内容'], 'example.txt', {type: 'text/plain'});
这里的['这里是文件内容']就是fileParts,它是一个数组,数组里的元素会被拼接成文件的内容。
内容的提问来源于stack exchange,提问作者ben
相关产品推荐
相关产品推荐

