如何获取PrimeNG FileUpload组件上传图片的本地文件路径?
PrimeNG FileUpload 获取本地文件路径问题解答
浏览器出于安全沙箱限制,禁止前端JavaScript代码获取用户本地文件的真实完整绝对路径,这是所有浏览器都遵循的通用安全策略,和你用的PrimeNG组件无关,没有任何前端上传组件可以突破这个限制。
- 你绑定的
onUpload回调事件中,$event.files可以拿到所有选中的文件对象,每个文件对象只能获取到文件名,拿不到类似C:\User\images\test.jpg的完整本地路径。部分旧版本浏览器可能会返回C:\fakepath\test.jpg格式的字符串,这里的fakepath是浏览器故意替换的虚假路径,没有实际作用。 - 如果你的需求是预览上传的图片,不需要真实本地路径,用
URL.createObjectURL(文件对象)就能生成临时可访问的预览地址,直接绑定到img标签的src属性即可正常显示。 - 如果你的需求是把文件传给后端存储,直接把文件对象封装进FormData提交就行,不需要提前获取本地路径,后端接收到文件流后会自行处理存储,返回服务端的文件访问地址给前端使用。
参考代码
你组件中的onBasicUpload方法可以参考如下实现:
onBasicUpload(event: any) { // 获取本次上传的文件列表 const uploadedFiles = event.files; uploadedFiles.forEach(file => { // 仅能获取文件名,无法获取完整本地路径 console.log('文件名:', file.name); // 生成图片预览地址 const previewUrl = URL.createObjectURL(file); console.log('图片预览临时地址:', previewUrl); // 提交到后端的示例 const formData = new FormData(); formData.append('upload_img', file); // 此处调用你的后端上传接口提交formData即可 }) }
内容的提问来源于stack exchange,提问作者John D
相关产品推荐
相关产品推荐

