本帖最后由 lgk56 于 2013-07-11 17:44:58 编辑

解决方案 »

  1.   

    什么叫根据文件路径上传,什么意思啊,找到上传文件,不是都通过<input type="file" name="myFile" />这么一个控件来找到上传文件的么,难道楼主的意思是一个普通的输入框,我手动把上传文件的路径写进去么,再获取输入框中的值,通过js方法来进行上传?
      

  2.   

    我用的是struts1  在form中配置 FormFile importFile 字段,然后再action中
    ServiceProfitContactUploadForm imForm = (ServiceProfitContactUploadForm) form;
    FormFile importFile = imForm.getImportFile();
    InputStream is = importFile.getInputStream();

    String store_path = request.getSession().getServletContext().getRealPath("/");
    String relativePath = "fileupload/smartheat/profitInfo/ServiceProfitInfo_" + nowtime + ".xls";
    String filePath = store_path + relativePath;
    OutputStream os = new FileOutputStream(filePath);
    int bytes = 0;
    byte[] buffer = new byte[is.available()];
    while((bytes=is.read(buffer, 0, is.available()))!=-1) {
    os.write(buffer,0,bytes);
    }
      

  3.   

    2L说得很对了,如果楼主是2L说的想法的话就太2了,那是不可能的。客户端路径,服务器怎么可能知道。直接使用<input type="file" name="myFile" />
    Action中使用private File myFile来接收就OK了。有了File你不就什么都知道了吗。
    struts2上传文件有默认大小限制,可以在struts.xml中配置修改
      

  4.   


    确实挺2的啊,因为公司框架封装了用Json提交表单,后台根本接收不到file ,除非我自己在表单定义Actiong,页面上千行代码已经做好了的,、改起来十分不方便,唯有想到这种【通过JS传递路径到后台处理】,继续求真相!!!!
      

  5.   

    学习了。
    不晓得struts2兼容不?很遗憾的告诉你,struts2种木有FormFile这个类....
      

  6.   


    确实挺2的啊,因为公司框架封装了用Json提交表单,后台根本接收不到file ,除非我自己在表单定义Actiong,页面上千行代码已经做好了的,、改起来十分不方便,唯有想到这种【通过JS传递路径到后台处理】,继续求真相!!!!你这服务器端,能直接访问客户端的的磁盘路径来上传文件?你这不是瞎扯么,这客户机的东西都在你服务器机器上呢?!!你是不是一直用自己的电脑既做服务器又做客户端的 ,把自己整迷糊了吧?!?,这要真能这么干,我写上某个人机器上的某个文件的路径,我自己就传上来了,想看啥看啥,这可能嘛!!!
      

  7.   

    你这个需求是上传指定路径的文件?如果是这个需求的话只能借助于第三方控件来实现。JS无法实现。struts2也无法实现。
      

  8.   

    楼主试试这个控件:http://www.cnblogs.com/xproer/archive/2010/10/24/1859895.html
    此控件是基于标准HTTP协议实现的文件上传功能。优势是扩展性非常好,整合简单,支持批量上传文件和上传文件夹功能,上传前获取本地文件大小,适合各种简单WEB项目。
    另外一个特点是支持自动上传指定的本地文件。单文件上传演示上传本地文件代码
    使用步骤如下:
    1.调用AddFile函数添加本地文件,注意路径需要使用双斜框(\\)
    2.调用PostFirst函数开始上传文件。<script type="text/javascript" language="javascript">
         var fileMgr = new HttpUploaderMgr();
         fileMgr.Load();//加载控件 window.onload = function()
    {
    fileMgr.Init();//初始化控件
    //添加一个本地文件
    fileMgr.AddFile("D:\\Soft\\QQ2010.exe");
    fileMgr.PostFirst(); };
    </script>
    单文件整合代码: 服务器返回消息:<input id="txtFilePath" type="text" size="50" />
    <script type="text/javascript" language="javascript">
    var fileMgr = new HttpUploaderSingleMgr();
    fileMgr.Config["PostUrl"] = "http://localhost:8080/asp.net/upload.aspx";
    fileMgr.Load();
    //文件上传完成后执行的回调函数
    fileMgr.CompleteHook = function(msg)
    {
    document.getElementById("txtFilePath").value = msg;
    }; window.onload = function()
    {
    fileMgr.Init();
    };
    </script>示例下载:
    CAB安装包
    开发文档
    ASP示例
    ASP.NET示例
    ASP.NET-FCKEditor2.x示例
    JSP示例
    PHP示例