使用js获取上传文件的路径?

因为浏览器的安全限制,<input type="file">经过js的onchange事件获取上传文件的路径时,返回的是C:fakepath文件名,隐藏了真实的物理路径,可使用window.URL.createObjectURL()返回一个Blob对象,Blob对象就是二进制数据,它是一个包含有只读原始数据的类文件对象
组件upload:浏览器

clipboard.png

clipboard.png
当点击按钮时触发SendDocument方法安全

clipboard.png
this.$refs.upload.submit();会触发beforeUpload方法
打印结果以下:框架

clipboard.png

clipboard.png
就能够把blob对象传给extrinsicFileName(表单里的一个字段)
这样能够把表单的数据提交给后台了学习

那么重点是,你为何要获取上传文件的路径?this

我是一个初学者,刚刚开始学习作上传文件这个功能,简单觉得要把文件路径返回给后台,经过他们去获取上传文件的数据。spa

那么上传文件功能其实是不须要获取文件路径的,而是经过二进制流传过去的,上面的blob对象其实就是表示文件的二进制数据,经过文件流的方式传输,在计算机里全部的对象都是经过二进制流传输的。Blob对象是File类型的父类型,就是Flie对象经过slice()读取整个文件的部分数据。File包含name、size、type等属性,Blob有size、type属性。因此上传文件是直接把客户端的文件数据发送到服务端,不是文件路径,而是整个文件的数据,客户端下载服务端的就能够经过服务端的路径找到服务端的文件,服务端是没有办法经过路径访问客户端文件的。
除非是,服务端返回一个路径,好比“c:/aa.txt”,而后客户端收到这个路径,经过代码找到这个文件,以后再把这个aa.txt整个文件数据发送给服务端,其实说到底仍是客户端把整个文件数据发送给服务端。对象

基础没打牢就开始学习框架,我开始怀疑本身是否是走错路线了,不过学习老是一个按部就班的过程,不多是直线式的,想和你们多交流,因此之后还请你们多多指教。事件

相关文章
相关标签/搜索