C#图片上传获取二进制流保存至AD
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUploadPhoto" runat="server" />
<asp:Button ID="UploadPhoto" runat="server" Text="上传" OnClick="UploadPhoto_Click" />
</div>
</form>
protected void UploadPhoto_Click(object sender, EventArgs e)
{
string name = FileUploadPhoto.PostedFile.FileName;
string type = name.Substring(name.LastIndexOf(".")+);
//FileStream fs = File.OpenRead(name);
byte[] content = new byte[FileUploadPhoto.PostedFile.ContentLength];
//fs.Read(content,0,content.Length);
//fs.Close(); Stream fileStream = FileUploadPhoto.PostedFile.InputStream;
fileStream.Read(content, , FileUploadPhoto.PostedFile.ContentLength);
fileStream.Close();
ChangeADAccount("刘科","liuke",content);
} /// <summary>
/// 获得DirectoryEntry对象实例,以管理员登陆AD
/// </summary>
/// <returns></returns>
private static DirectoryEntry GetDirectoryObject()
{
DirectoryEntry entry = null;
try
{
entry = new DirectoryEntry("LDAP://10.10.10.1/DC=aaa,DC=com", "账户", "密码", AuthenticationTypes.Secure);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
return entry;
} /// <summary>
/// 根据用户公共名称取得用户的 对象
/// </summary>
/// <param name="commonName">用户公共名称</param>
/// <returns>如果找到该用户则返回用户的对象,否则返回 null</returns>
public static DirectoryEntry GetDirectoryEntry(string commonName)
{
DirectoryEntry de = GetDirectoryObject();
DirectorySearcher deSearch = new DirectorySearcher(de);
deSearch.Filter = "(&(&(objectCategory=person)(objectClass=user))(cn=" + commonName.Replace("\\", "") + "))";
deSearch.SearchScope = SearchScope.Subtree;
try
{
SearchResult result = deSearch.FindOne();
de = new DirectoryEntry(result.Path);
return de;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return null;
}
} /// <summary>
/// 设置指定的属性值
/// </summary>
/// <param name="de"></param>
/// <param name="propertyName">属性名称?</param>
/// <param name="propertyValue">属性值</param>
public static void SetProperty(DirectoryEntry de, string propertyName, string propertyValue)
{
if (de.Properties.Contains(propertyName))
{
if (String.IsNullOrEmpty(propertyValue))
{
de.Properties[propertyName].RemoveAt();
}
else
{
de.Properties[propertyName][] = propertyValue;
}
}
else
{
if (!String.IsNullOrEmpty(propertyValue))
{
de.Properties[propertyName].Add(propertyValue);
}
}
} /// <summary>
/// 修改查询到的用户的图像
/// </summary> public static string ChangeADAccount(string CommonName, string Account, byte[] binaryData)
{
//获取对应AD实体
DirectoryEntry user = GetDirectoryEntry(CommonName);
try
{
//SetProperty(user, " sAMAccountName ", Account);
//user.Invoke("SetPhoto", new object[] { photo });
user.Properties["thumbnailPhoto"].Add(binaryData);
user.CommitChanges();
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
throw e;
}
return user.Path;
}
然后在AD的 属性编辑器 选项卡看到 thumbnailPhoto 属性 有一堆二进制内容,即为上传成功的图片内容。
如果看不到此属性,点击筛选器,去掉 只显示有值的属性的勾。
解决文件名中文乱码
http://blog.csdn.net/lzy_1515/article/details/5538664
AD中thumbnailphoto在Lync中显示,图片最大值为100 K
修改 AD架构为了使头像能够显示在GAL中,需要让其在全局编录(GC)中进行复制 ,
默认情况下,对象 的“thumbnailphoto”属性 值不会在GC中进行复制 ,通过修改 AD架构可以是实现 这一个功能。
在以管理 员身份打开cmd,并执行 Regsvr32schmmgmt.dll注册AD架构管理 单元、
打开MMC控制 台,添加AD架构管理 单元
在活动 目录 架构管理 单元中展开“属性 ”节点,定位到“thumbnailPhoto”。
打开“thumbnailPhoto”的属性 对话框,在“常规”选项 卡上勾选“将此属性 复制 到全局编录”。
接下来,需要用到一个导入图片到AD数据库的工具:
ADPhotoImport.exe username c:photousername.jpg
图片大小最好为96*96像素 10K以下
(需要此工具的可留下email地址,我会发出至邮箱)
或者使用网上的一个收费工具,未注册时,会在图片上打上水印
搜索ADPhotosTrial.msi
http://tech.ddvip.com/2012-12/1356887106188020.html
C#图片上传获取二进制流保存至AD的更多相关文章
- 从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文 ...
- 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,
一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...
- .net mvc + layui做图片上传(二)—— 使用流上传和下载图片
摘要:上篇文章写到一种上传图片的方法,其中提到那种方法的局限性,就是上传的文件只能保存在本项目目录下,在其他目录中访问不到该文件.这与浏览器的安全性机制有关,浏览器不允许用户用任意的路径访问服务器上的 ...
- Mvc利用淘宝Kissy uploader实现图片批量上传附带瀑布流的照片墙
前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...
- file标签 - 图片上传前预览 - FileReader & 网络图片转base64和文件流
记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...
- Mvc Kissy uploader实现图片批量上传 附带瀑布流的照片墙
前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...
- 用Seam实现:图片上传 + 保存到数据库 + 从数据库读出图片并显示到页面中
上传图片并保存到数据库 seam给我们提供了 s:fileUpload 标签以完成文件上传功能.使用该标签时,要在web.xml中声明一个Seam的过滤器: <filter> <fi ...
- TCP客户端图片上传服务端保存本地示例
//TCP客户端public class TCPClient { public static void main(String[] args)throws IOException { Socket s ...
- C# winform 窗体应用程序之图片上传Oracle数据库保存字段BLOB
C# winform 窗体应用程序之图片上传Oracle数据库保存字段BLOB 我用的数据库是Oracle,就目前来看,许多数据库现在都倾向于Oracle数据库,对ORACLE数据库基本的操作也是必须 ...
随机推荐
- 黑匣子_NOI导刊2010提高(06) Splay Tree
题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ...
- thinkphp5引入百度编辑器
在ThinkPHP的模板(html文件)中引入Ueditor 下载ueditor解压至public/static目录 在需要的页面引入js文件 <script type="text/ ...
- python 3.x 安装问题及连接oracle数据库
最近有用到python去处理一些问题,发现现在3已出来,遂用直接下3.7使用 发现问题还是有一点的 1. pip 会出现ssl问题 Could not install packages due to ...
- ios 检测是否安装微信异常
解决方法 在info.plist 添加LSApplicationQueriesSchemes 类型是Array weixin wechat
- jmeter 签名MD5生成(转)
请求接口需要同时发送签名,签名定义为: 可以看出签名就是把用户的密码 .用户名 和签名key生成一个md5串就可以了 刚好jmeter 有个md5 生成,生成前需要获取name ,password k ...
- RetryException
public class RetryException extends Exception { public TempestRetryException(Throwable e) { super(e) ...
- 033 Search in Rotated Sorted Array 搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个关键点上旋转.(即 0 1 2 4 5 6 7 将变成 4 5 6 7 0 1 2).给你一个目标值来搜索,如果数组中存在这个数则返回它的索引,否则返回 -1.你 ...
- Java文件与io——RandomAccessFile
RandomAccessFile是IO包的类,从Object直接继承而来.只可以对文件进行操作,可以对文件进行读取和写入.RandomAccessFile有强大的文件读写功能,其内部是大型byte[] ...
- Java面向对象_包装类访问修饰符
在java中有一个设计的原则"一切皆对象",java中的基本数据类型就完全不符合这种设计思想,因为八种基本数据类型并不是引用数据类型,所以java中为了解决这样的问题,jdk1.5 ...
- settings.xml样例文件
localRepository G:\program-my\maven-responsery true --> false --> com.your.plugins --> prox ...