获得应用在服务器本地的绝对路径

本文介绍了在Struts框架中如何获取应用程序在服务器上的绝对路径。提供了两种方法:通过Action中的servlet.getServletContext().getRealPath(/); 和在其他地方使用Request.getSession().getServletContext().getRealPath(/);。

 在struts里面有时候需要获得应用在服务器本地的绝对路径,方法如下:
       1.   在action里可以用 servlet.getServletContext().getRealPath("/");
       2.   其他地方可以用  Request.getSession().getServletContext().getRealPath("/"); 

### 前端获取本地文件的绝对路径 在现代浏览器中,出于安全限制,前端 JavaScript 无法直接获取用户选择文件的本地绝对路径。这是为了防止恶意网站通过文件路径探测用户的敏感信息。因此,前端获取文件路径时通常只能得到一个 `C:\fakepath\filename` 或者相对路径,而不是真实的本地绝对路径 [^1]。 #### 1. 使用 `<input type="file">` 获取文件对象 前端可以通过 `<input type="file">` 元素让用户选择文件,并通过 `File API` 获取文件对象,但无法直接获取文件的本地路径: ```html <input type="file" id="fileInput" /> ``` ```javascript document.getElementById('fileInput').addEventListener('change', function(event) { const file = event.target.files[0]; console.log(file.name); // 文件名 }); ``` 这种方式只能获取文件名,而无法获取完整的本地路径 [^2]。 #### 2. 使用 Electron 获取文件绝对路径 如果项目已经使用 Electron 打包成桌面应用,可以通过 Electron 提供的 `dialog` 模块让用户选择文件并获取文件的本地绝对路径: ```javascript const { dialog } = require('electron').remote; dialog.showOpenDialog({ properties: ['openFile'] }).then(result => { if (!result.canceled && result.filePaths.length > 0) { const filePath = result.filePaths[0]; console.log('文件绝对路径:', filePath); } }); ``` 在 Vue3 项目中引入 Electron,首先需要安装相关依赖: ```bash npm install --save-dev electron npm install --save-dev electron-builder ``` 然后在 Vue 组件中使用 Electron 的 API 来获取文件路径 [^1]。 #### 3. 使用拖放(Drag and Drop)方式获取文件路径 在 Electron 环境中,还可以通过拖放文件到应用窗口来获取文件的绝对路径: ```javascript window.addEventListener('dragover', function(e) { e.preventDefault(); }); window.addEventListener('drop', function(e) { e.preventDefault(); const file = e.dataTransfer.files[0]; console.log('文件路径:', file.path); // Electron 环境下可用 }); ``` 需要注意的是,这种方法在普通浏览器中仍然无法获取文件的真实路径,只有在 Electron 应用中才能访问到 `file.path` 属性 。 #### 4. 后端协助获取文件路径 如果文件需要上传到服务器,可以在前端将文件对象通过 `FormData` 上传,后端接收文件并保存,然后返回文件的存储路径: ```javascript const formData = new FormData(); formData.append('file', fileInput.files[0]); fetch('/upload', { method: 'POST', body: formData }).then(response => response.json()) .then(data => { console.log('文件路径:', data.filePath); }); ``` 后端可以通过如下方式获取上传的文件并保存: ```java private void document_a(HttpServletRequest request, HttpServletResponse response) throws Exception { String file_D = request.getParameter("Dem"); // 返回前端获取的地址 } ``` 不过这种方式并不能获取文件在用户本地的路径,而是获取文件在服务器端的存储路径 [^3]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值