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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BS在线文件管理系统】版本:1.0.2 ------------------------------------------------------------------ 系统要求: 1.服务器支持ASP权限且支持FSO(File System Object)权限; 2.建议win2000 + IIS5.0 以上; 3.本系统在Win2000+IIS5.0下测试可用; ------------------------------------------------------------------ 功能如下: 1.可以显示服务器上的所有硬盘目录,可以显示每个文件以及目录; 2.可以修改、删除、改名、编辑(此功能仅限编辑文本类文件,如.txt/.asp /.htm/.html/.css 文件)、复制、移动任意文件和目录; 3.可以在线修改本程序自身;(此功能仅建议ASP技术熟练者在必要时使用) 强烈建议不要在线修改本程序自身,如果出错请用原文件覆盖即可; 4.可以设置超级管理员、普通管理员,超级管理员可以访问所有硬盘上的文件 ,可以为普通管理员设置权限目录; 5.普通管理员可以访问超级管理员设置的权限目录里的文件和目录; 6.可以用浏览器浏览服务器上非虚拟目录里的文件; 7.文件上传功能采用稻草老农(5xsoft.com)的无组件上传文件;可同时上传 多个文件到指定目录; 8.数据库密码:brightstar,默认超级管理员:brightstar,密码:brightstar 建议自行更改数据库文件名,同时将conn.asp中"brightstar.asp"改为你的 数据库文件名;(数据库为:db/brightstar.asp,Access数据库) ------------------------------------------------------------------ 主要更新说明: 1.上传文件采用稻草老农(5xsoft.com)的无组件上传类(2.0),上传速度成倍 提高; 2.修改优化若干小问题; 2.数据库添加防止下载的表,防止下载

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值