zoukankan      html  css  js  c++  java
  • BS文件夹上传操作(一)

    如果有一个需求,要求你在BS上实现文件夹上传操作功能?你该如何实现?

      ActiveX?Js插件?自定义控件 还是…… 

    下面说说我们的实验

    实验一 想到了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应该可以 ,下手……

    先看效果:

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

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

    再看代码

    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状态都设置成“启用”的后果是什么了……

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

                      

      “如果有一个需求,要求你在BS上实现文件夹上传操作功能?你该如何实现?


     

      

      今天是个大好日子,祝愿园子里面的朋友:有情人的终成眷属 ,没情人的早日找到心中的情人再终成眷属!

     


    作者:PEPE
    出处:http://pepe.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


    作者:PEPE
    出处:http://pepe.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    郁闷的出纳员 平衡二叉树(SBT)
    POJ 3225 Help with Intervals (线段树,区间成段更新)
    HDU 3038 How Many Answers Are Wrong (并查集)
    POJ 1733 Parity game (HASH+并查集)
    POJ 1417 True Liars(并查集+DP)
    POJ 2912 Rochambeau(枚举+并查集)
    UILabel添加发光效果
    TinyMCE integration with phpBB3
    快速重传与快速恢复算法
    TCP的超时与重传
  • 原文地址:https://www.cnblogs.com/PEPE/p/2349720.html
Copyright © 2011-2022 走看看