winform实现bs下载文件夹上传操作

实验一 想到了WinForm 中的文件夹上传

    在WebForm中引用WinForm->“using System.Windows.Forms;” 这里要涉及线程操作

 代码如下 复制代码

[DirectMethod]
        public void TopBarClick(string strOpearate)
        {
            btnUpdateEmInfos(strOpearate); 
        }
        protected void btnUpdateEmInfos(string strOperate)
        {
            if (strOperate == "导入")
            {
                
                Thread s = new Thread(new ThreadStart(FoldDialog));
                //s.ApartmentState=ApartmentState.STA;
                //COM提供的线程模型共有三种:Single-Threaded Apartment(STA 单线程套间)、Multithreaded Apartment(MTA 多线程套间)和Neutral Apartment/Thread Neutral Apartment/Neutral Threaded Apartment(NA/TNA/NTA 中立线程套间,由COM+提供)。

                s.SetApartmentState(System.Threading.ApartmentState.STA);
                s.Start();

            }
        }

        /// <summary>
        /// 文件夹弹出框
        /// </summary>
        private void FoldDialog()
        {
            FolderDialog d = new FolderDialog();
            string path = string.Empty;
            if (d.ShowDialog() == DialogResult.OK)
            {
                path = d.Path;
            }
        }

FolderBrowserFolder

 代码如下 复制代码

namespace CRM_BS.WebUI.Common
{
    public class FolderDialog : FolderNameEditor
    {
        FolderNameEditor.FolderBrowser fDialog = new System.Windows.Forms.Design.FolderNameEditor.FolderBrowser { StartLocation = System.Windows.Forms.Design.FolderNameEditor.FolderBrowserFolder.Desktop };//逻辑桌面
        /// <summary>
        /// 显示文件夹浏览器对话框
        /// </summary>
        /// <returns></returns>
        public DialogResult ShowDialog()
        {
            fDialog.Description =  "请选择文件夹" ;
            return fDialog.ShowDialog();
        }
        /// <summary>
        /// 获取或设置文件夹上方显示的说明
        /// </summary>
        /// <param name="description">文件夹上方说明</param>
        /// <returns></returns>
        public DialogResult ShowDialog(string description)
        { 
            fDialog.Description = description;
            return fDialog.ShowDialog();
        }
        /// <summary>
        /// 文件夹目标路径
        /// </summary>
        public string Path
        {
            get
            {
                return fDialog.DirectoryPath;
            }
        } 
        ~FolderDialog()
        {
            fDialog.Dispose();
        }
    }
}

但是效果却如下: 

 

弹出框不是激活状态

 

单击弹出框 效果

 

 

要的就是这效果,但是功能上有缺陷……实验一宣告失败(如果你这样成功了还请告知……)

 

实验二 BS要这效果? 那JS应该可以 ,下手……

先看效果:

 

看上去,好像是满足了需求

 

通过方法,还能顺利取出路径

 

再看代码

 代码如下 复制代码

<%--导入--%>

    <script language="javascript" type="text/javascript">
        function BrowseFolder() {
            try {
                var Shell = new ActiveXObject("Shell.Application");
                var Folder = Shell.BrowseForFolder(0, "请选择文件夹", 0); //起始目录为:桌面
                if (Folder != null) {
                    Folder = Folder.items(); // 返回 FolderItems 对象
                    Folder = Folder.item(); // 返回 Folderitem 对象
                    Folder = Folder.Path;    // 返回路径
                    if (Folder.charAt(Folder.length - 1) != "\") {
                        Folder = Folder + "\";
                    }
                    //document.all.savePath.value = Folder;
                    //document.getElementById(savePath).value = Folder;
                    //hdPath.setValue(Folder);
                    //alert(document.all.savePath.value);
                    Ext.net.DirectMethods.GetPath(Folder);
                    //return Folder;
                }
            } catch (e) {
                alert(e.message);
            }
        }

    </script>

后台代码

 代码如下 复制代码

//导入
            (X.GetCtl("btnTopBarArrowDown") as Ext.Net.Button).Listeners.Click.Handler = "BrowseFolder();";

       /// <summary>
        /// 导入->确定 方法
        /// </summary>
        /// <param name="path"></param>
        [DirectMethod]
        public void GetPath(string path)
        {
            CommonMethod.Show("", path, Ext.Net.MessageBox.Icon.INFO);
        }

虽然表面上看“功能实现,代码也简洁,可以说是很成功” 但却牺牲了IE的安全性,需要进行一些设置。

步骤如图

一、

 

二、

 

 

再看看ActiveX 百科解释

  “ActiveX 是一个开放的集成平台,为开发人员、 用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内容的方法。 使用 ActiveX, 可轻松方便的在 Web页中插入 多媒体效果、 交互式对象、以及复杂程序,创建用户体验相当的高质量多媒体 CD-ROM”

所以可想而知,如果为了实现这个功能我们把ActiveX状态都设置成“启用”的后果是什么了……

 

语文上经常用到“前后呼应”,那么回归到之初的问题

时间: 2024-10-25 02:25:16

winform实现bs下载文件夹上传操作的相关文章

solr-java 文件夹上传 实现

问题描述 java 文件夹上传 实现 有没有完整的第三方框架可以实现文件夹上传,最好是文档详细的,我看很多都是基于html5的拖拽上传,本人不是很了解html5请各位指教,谢谢! 解决方案 可以考虑使用easyui的上传插件挺好用, 解决方案二: uploadify 这个上传挺不错的

远程图片自动按文件夹上传到服务器-默飞出品_小偷/采集

<% '远程图片自动按文件夹上传到服务器 '制作:默飞 Server.ScriptTimeOut=99999 savepath="upfiles" '图片保存路径,可以根据自己的需要,进行修改,如没有创建此文件夹,系统将自动创建 'QQ:33224360 'HOME:http://mofei.xinxiu.com 'EMAIL:mofei5@yahoo.com.cn '2005-10-15 '版权说明不影响资源,请保留版权信息 imgpath=request("imgp

远程图片自动按文件夹上传到服务器-默飞出品

<html> <head> <meta http-equiv="content-Type" content="text/html; charset=gb2312"> <title>远程图片自动按文件夹上传到服务器-默飞出品</title> <style type=text/css> a { text-decoration: none; color: blue } a:hover { text-d

挑战--asp.net 文件夹上传

今天遇到一个有趣的问题,公司让平安做一个上传文件夹的功能,这个任务具有一定的挑战性哦.上传文件夹,我第一次看到有人这样做,以前都是上传压缩文件,从来就没有见人上传过文件夹,我也从来就没有尝试过.先不讨论公司那些人是怎么想的,不过这是一个具有研究性的问题.自己思考一阵子,想出一个解决方案.     公司是做Web项目开发的,对于一个网站来说上传那肯定是必不可少的功能.呵呵,上传文件想得出来也不错.下面是我的两种考虑方案    (1)使用Directory这个类结合JavaScript       

php 文件图片上传类程序

<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>php教程 文件图片上传类程序</title> </head> <body> <form enctype="multipart/form-data" action="u

jsp+servlet实现文件的上传和下载

实现文件的上传和下载首先需要理解几个知识,这样才可以很好的完成文件的上传和下载: (1):上传文件是上传到服务器上,而保存到数据库是文件名 (2):上传文件是以文件转换为二进制流的形式上传的 (3): enctype="multipart/form-data"需要设置在form里面,否则无法提交文件 (4):必须在servlet3.0里面加上这句话,@MultipartConfig  1:首先创建一个前台页面upload.jsp,源码如下所示: 1 <%@ page langua

Android Http实现文件的上传和下载_Android

最近做一个项目,其中涉及到文件的上传和下载功能,大家都知道,这个功能实现其实已经烂大街了,遂.直接从网上荡了一堆代码用,结果,发现网上的代码真是良莠不齐,不是写的不全面,就是有问题,于是自己重新整理了一番,把它们发出来,希望更多人能受用. 文件上传 通过org.apache.commons.httpclient.HttpClient来实现文件上传,该jar包可以直接从网上所搜.下载. /** * @param mContext 上下文 * @param targetUrl 文件上传地址 * @p

Java实现FTP文件的上传和下载功能的实例代码_java

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件.在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)."下载"文件就是从远程主机拷贝文件至自己

asp.net文件批量上传下载代码与详细说明

asp教程.net文件批量上传下载代码与详细说明 private void DownLoadCompressFile()         {             //create file package             List<CompanyFileDomain> lists = new List<CompanyFileDomain>();             if (DeluxeGridFiles.SelectedKeys.Count > 0)