工作中遇到一个问题,需求是如图1点击页面1的浏览,然后会打开如图2的页面。图2中可以选择多个上传文件,当点击图2的确定后,文件并未上传,而是回到图1,点击图1的上传才开始上传。
图1:
图2:
这个能实现吗?我看网上说html中的file标签是只读的,肯定没办法给页面1的隐藏域中的file标签赋值然后上传。那还有其他办法吗?

解决方案 »

  1.   

    不行,除非你的图2是div模拟的弹出层就行,选择完文件后确认隐藏层,点击图一上传提交图2中的表单就行了如果是window.open打开的图2只能在图2中上传了。。
      

  2.   

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

  3.   

    解决了一个大问题,最近项目中也有这个需求。我们是通过一个控件进行拍照,然后再上传到服务器上面。拍照的那个控件没有自动上传功能。他提供了拍照后图片的保存路径。但是JS不能设置File标签的路径,还需要用户手动选择。用户觉得非常麻烦。后来是用这个控件搞定的。
      

  4.   

    那你何不直接把“浏览”按钮换成“增加上传控件”按钮  点一次自动增加一个file控件
      

  5.   

    谢谢,最后使用div模拟模态窗口实现。