`

关于上传文件获取绝对路径(转载)

 
阅读更多

转载地址:http://www.cnblogs.com/linjiqin/archive/2011/03/21/1990688.html

这个例子原理:

通过建立本地和服务器之间的通信链接  把本地中要上传的文件通过流上传到服务器上面

然后读取服务器中的文件。我用服务器中文件的路径代替本地的绝对路径

 

其实没有获取到本地的绝对路径,网上很多关于这方面的办法 但是大多都是针对IE和FF 没有Chrome 

 就借鉴了另一种方法。

多个<input type="file" name="image">的上传  name 在Action中对应File[] image 可以改为其他名称

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.Writer;

import java.util.List;

import org.apache.struts2.ServletActionContext;

import org.jsoup.helper.HttpConnection.Response;

import com.jpsycn.kfwggl.common.tools.CopyDataToDatabase;

import com.jpsycn.kfwggl.common.tools.readExcel;

import com.opensymphony.xwork2.ActionSupport;

-----------------------控制层

@SuppressWarnings("serial")

public class UpLoadAction extends ActionSupport{

    private File[] image; //上传的文件 name="image"

    private String[] imageFileName; //文件名称

    private String[] imageContentType; //文件类型

    private String savePath;

 

    @SuppressWarnings({ "static-access", "unchecked" })

@Override

    public String execute() throws Exception {

    String msg;

        ServletActionContext.getRequest().setCharacterEncoding("UTF-8");

        List<List<String>> lt=null;

        boolean u=false;

        boolean d=false;

        

        try {

       //取得需要上传的文件数组

       File[] files = getImage();

       if (files !=null && files.length > 0) {

           for (int i = 0; i < files.length; i++) {

               //建立上传文件的输出流, getImageFileName()[i]

           String url=getSavePath() + "\\" + getImageFileName()[i];

           FileOutputStream fos = new FileOutputStream(url);

               //建立上传文件的输入流

               FileInputStream fis = new FileInputStream(files[i]);

               byte[] buffer = new byte[1024];

               int len = 0;

               while ((len=fis.read(buffer))>0) {

                   fos.write(buffer, 0, len);

               }

               fos.close();

               fis.close();

           //System.out.println(url);

           lt=new readExcel().readExcel(url);

           if(i==0){

           u=new CopyDataToDatabase().addUser(lt,"TB_USER");

           }else if(i==1){

           d=new CopyDataToDatabase().addDepart(lt, "TB_DEPART");

           }else if(i==2){

           new CopyDataToDatabase().add_user_depart(lt, "TB_USER_DEPART");

           }

           }

       }

       if(u==false||d==false){

       msg="faile";

       }else{

       msg="success";

       }

    } catch (Exception e) {

    msg="faile";

e.printStackTrace();

}

        return msg;

    }

    public File[] getImage() {

        return image;

    }

 

    public void setImage(File[] image) {

        this.image = image;

    }

 

    public String[] getImageFileName() {

        return imageFileName;

    }

 

    public void setImageFileName(String[] imageFileName) {

        this.imageFileName = imageFileName;

    }

 

    public String[] getImageContentType() {

        return imageContentType;

    }

 

    public void setImageContentType(String[] imageContentType) {

        this.imageContentType = imageContentType;

    }

 

    /**

     * 返回上传文件保存的位置

     * 

     * @return

     * @throws Exception

     */

    public String getSavePath() throws Exception {

        return ServletActionContext.getServletContext().getRealPath(savePath);

    }

 

    public void setSavePath(String savePath) {

        this.savePath = savePath;

    }

注:savePath在struts.xml中配置 配置的参数如:Excel 必须在项目中有对应的名称为Excel的文件夹

-----------------struts.xml

<package name="upload1" namespace="/upload1" extends="struts-default">

        <action name="upload1" class="com.jpsycn.kfwggl.system.action.UpLoadAction" method="execute">

            <!-- 要创建/image文件夹,否则会报找不到文件 -->

            <param name="savePath">/Excel</param>

            <result name="success">/WEB-INF/system/import/message.jsp</result>

            <result name="faile">/WEB-INF/system/import/faile.jsp</result>

        </action>

        <action name="u_*" class="com.jpsycn.kfwggl.system.action.UpLoadAction" method="{1}">

        <result name="success">/WEB-INF/system/import/Import.jsp</result>

        </action>

    </package>

--------------jsp页面

<form id="myForm" enctype="multipart/form-data" method="post">

    <table class="ceshi2" width="100%" border="0" cellspacing="0">

       <tr>

       <td width="20%" class="tit2" nowrap="nowrap" >请选择存放用户的Excel文件:</td>

       <td><input type="file" id="userExcelURL" name="image" /></td>

       </tr>

       <tr>

       <td width="20%" class="tit2" nowrap="nowrap" >请选择存放机构的Excel文件:</td>

       <td><input type="file"  id="departExcelURL" name="image" /></td>

       </tr>

       <tr>

       <td width="20%" class="tit2" nowrap="nowrap" >请选择存放用户和机构关联关系的Excel文件:</td>

       <td><input type="file" id="userAndDepartURL" name="image"/></td>

       </tr>

       <tr>

       <td>&nbsp;</td>

       <td><input type="button" value="导&nbsp;入" class="btn" onclick="check()">

       <input type="reset" value="重&nbsp;置" class="btn">

       </td>

       </tr>

    </table>

    </form>

  </body>

 <script type="text/javascript">

 function check(){

 var userExcelURL=$("#userExcelURL").val();

 var departExcelURL=$("#departExcelURL").val();

 var userAndDepartURL=$("#userAndDepartURL").val();

 if(userExcelURL==""||userExcelURL.indexOf(".xls")<0){

 alert("请存放选择用户的Excel文件!");

 }else if(departExcelURL==""||departExcelURL.indexOf(".xls")<0){

 alert("请存放选择机构的Excel文件!");

 }else if(userAndDepartURL==""||userAndDepartURL.indexOf(".xls")<0){

 alert("请选择存放用户和机构关联关系的Excel文件!");

 }else{

 //alert(userAndDepartURL);

 var form=document.getElementById("myForm");

 form.action="<%=basePath%>upload1/upload1.do";

 form.submit();

 }

 

   </script>

 

-----------------------------------------

jsp页面不是异步提交  所以没有实现弹出对话框告知是否操作成功!  菜鸟一个,知道的请赐教!

 

分享到:
评论

相关推荐

    C# 获取文件路径

    C# 获取文件路径 C# 获取文件路径是指在 C# 程序中获取当前执行文件的路径、当前工作目录的路径、基目录的路径等信息。在实际开发中,获取文件路径是非常重要的,例如在读取配置文件、加载资源文件、记录日志文件等...

    ant自动获取文件路径

    标题“ant自动获取文件路径”涉及的是Apache Ant这一构建自动化工具在处理文件路径时的技巧。Apache Ant是一个基于Java的构建工具,它被广泛用于Java项目中,类似于Unix的make,但依赖于XML来描述构建过程。在Ant中...

    javascript文件中获取当前文件路径

    在开发javascript插件的过程中,我们有时候需要获取当前JS文件的路径,用于自动加载一些图片、CSS等外部资源,但是javascript文件中并没有像PHP那样的__FILE__常量来供我们取得当前文件路径

    Java中获取文件路径的几种方式

    理解如何在Java中获取文件路径,特别是区分绝对路径和相对路径,对于构建稳定、可移植的应用程序至关重要。本文将深入探讨Java中获取文件路径的多种方法,以及这些方法背后的原理。 ### 一、Java中的路径类型 ####...

    js弹出窗口 + 获取上传文件全路径

    本文将深入探讨"js弹出窗口 + 获取上传文件全路径"这一主题,这两个知识点是JavaScript在交互式用户界面设计中的关键部分。 首先,让我们来讨论"js弹出窗口"。在网页开发中,弹出窗口通常用于显示警告信息、确认...

    ie7/ie8获取上传文件的绝对路径源代码

    在探讨如何在IE7与IE8浏览器中获取上传文件的绝对路径之前,我们先来了解一下为何这成为了一个问题。Internet Explorer 7 和 IE8 是早期的网页浏览器版本,它们在处理DOM(文档对象模型)和JavaScript的方式上存在...

    Android如何通过URI获取文件路径示例代码

    最近在工作的过程中,遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题。 因为需求的原因,要求拍照上传或者从相册中选择图片上传,而且图片是需要经过压缩的,大小不能超过2M。 很快,拍照的这部分...

    windows linux 下,获取java项目绝对路径的方法

    windows linux 下,获取java项目绝对路径的方法,struts2设置了struts.multipart.saveDir后会在根目录建立文件夹,这样会涉及linux下的权限问题

    fckeditor上传文件绝对路径设置方法

    在使用FCKEditor这款强大的富文本编辑器时,有时我们需要自定义上传文件的路径,使其成为绝对路径,以便更好地管理和访问资源。FCKEditor默认情况下,上传文件的路径通常是相对路径,这可能在多服务器环境或者需要...

    JAVA获取文件绝对路径的方法

    以下是一些在Java中获取文件绝对路径的方法: 1. `File.getAbsolutePath()` `java.io.File` 类提供了 `getAbsolutePath()` 方法,此方法返回表示文件或目录的绝对路径字符串。例如: ```java File file = new ...

    BAT批处理脚本-文件相关操作-获取相对路径.cmd.zip

    在这个名为"BAT批处理脚本-文件相关操作-获取相对路径.cmd.zip"的压缩包中,包含了一个用于获取文件相对路径的批处理脚本。 批处理脚本的编写通常涉及到DOS命令,例如`cd`(改变目录)、`dir`(列出目录内容)和`...

    C#操作文件系统绝对路径和相对路径

    C#根据当前进程的启动路径,获得多个参数拼接的绝对路径。以及根据基准路径和参数获得相对路径。路径操作只用.NET中的System.IO和System.Text命名空间,相比其它的实现方式(比如采用System.Web命名空间)实用性更强...

    js获取上传文件的绝对路径实现方法

    &lt;input type="file" id="importFile" /&gt; &lt;input type="button" onclick="upload()"/&gt; [removed] ...如上面的代码,用文件上传对话框选择文件后,如果选择”D:\\temp\file\test.txt”文

    拖动文件至对话框,获取文件路径

    ### 拖动文件至对话框,获取文件路径 在基于对话框的程序设计中,实现文件拖拽功能是一项常见的需求。特别是在Visual C++(以下简称VC)开发环境中,这一功能的实现不仅增强了用户界面的友好性,也提升了用户体验。...

    在JAVA文件中获取该项目的相对路径.doc

    在 Servlet 中,可以使用 request.getServletPath() 获取当前文件的绝对路径,然后使用 request.getSession().getServletContext().getRealPath(request.getRequestURI()) 获取当前文件的绝对路径。同时,也可以使用...

    JS获取input file绝对路径的方法(推荐)

    在进行网页开发过程中,尤其是涉及到文件上传功能时,获取用户选择的文件的路径是一个常见需求。传统的HTML中,`&lt;input type="file"&gt;` 元素可以用来让用户选择文件,但是出于安全考虑,浏览器出于安全考虑,不允许...

    相对路径和绝对路径的概念

    绝对路径的优点在于其明确性和不变性,即不论从哪个页面引用同一个文件,其路径都保持一致,这在大型项目中特别有用,能够避免因路径问题导致的链接错误。但同时,绝对路径的缺点也很明显,即在进行文件移动或站点...

    JAVA获取各种路径总结

    - 如果你需要获取某个文件所在目录的上级目录,可以先通过`application.getRealPath(request.getRequestURI())`得到该文件的绝对路径,再使用`new File(...).getParent()`获取其上级目录。 2. **Servlet中获取路径...

    获取指定目录下的文件相对路径

    "获取指定目录下的文件相对路径"这个主题就是关于如何在NSIS脚本中有效地管理文件路径,以便于安装过程中的文件操作。 首先,了解相对路径的概念是至关重要的。相对路径是相对于当前工作目录或某个基点的文件或目录...

Global site tag (gtag.js) - Google Analytics