以上实例使用curl客户端没有问题,但在浏览器中是无法演示的
Topic source泪,研究了一天,放弃,使用multipart/form-data编码方式提交的文件数据(包括其它字段数据),规则有些不一样,非常像STMP协议中的Part(将表单中所有的项目都拆解为一个一个的Part),而且也是基于InputStream流来传输数据的(POST都是基于流来发送请求,指的就是body部分),如果在Filter中读取了InputStream或getReader,那么与Part相关的就全是失效的,跟踪源码,这东西是在connect中就已经写了解析代码(跟协议相关)。就目前原则上,我仍然实现不了浏览器端上传文件,能实现Filter校验的功能
想到了克隆,失败。。。。
想到了从Request源头重新初始化,Request的实现经历了2层代理,也够狠的,失败。。。。
Q:在现代浏览器中,如何使用js读取用户指定的文件内容?
GPT:现代浏览器中可以使用File API来读取用户指定的文件内容。
- 首先在html代码中添加一个文件选择框,例如:
<input type="file" id="fileInput">
- 然后在js代码中获取到选择的文件并读取文件内容,例如:
var fileInput = document.getElementById("fileInput");
fileInput.addEventListener("change", function() {
var file = fileInput.files[0];
var reader = new FileReader();
reader.onload = function(event) {
var content = event.target.result;
// do something with the file content
};
reader.readAsText(file);
});
在这个例子中,通过FileReader来读取文件内容。在文件读取完成后,onload函数会被调用,通过event.target.result获取到文件内容。需要注意的是,FileReader对象有多种读取文件的方式,上面的代码演示了一种将文件读取为文本的方式(readAsText)。如果需要读取其他类型的文件或者以其他方式读取文件,可以查看FileReader对象的文档。
- 1
jorry有桥
因为 request.getInputStream() 获取的是浏览器中提交的整个表单,表单的类型为 multipart/form-data,所以,每个文件都对应一个 Part,
我们应该要获取的是Part中的二进制数据流,