<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的更多相关文章

  1. 从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能

    UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文 ...

  2. 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,

    一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...

  3. .net mvc + layui做图片上传(二)—— 使用流上传和下载图片

    摘要:上篇文章写到一种上传图片的方法,其中提到那种方法的局限性,就是上传的文件只能保存在本项目目录下,在其他目录中访问不到该文件.这与浏览器的安全性机制有关,浏览器不允许用户用任意的路径访问服务器上的 ...

  4. Mvc利用淘宝Kissy uploader实现图片批量上传附带瀑布流的照片墙

    前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...

  5. file标签 - 图片上传前预览 - FileReader & 网络图片转base64和文件流

    记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...

  6. Mvc Kissy uploader实现图片批量上传 附带瀑布流的照片墙

    前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...

  7. 用Seam实现:图片上传 + 保存到数据库 + 从数据库读出图片并显示到页面中

    上传图片并保存到数据库 seam给我们提供了 s:fileUpload 标签以完成文件上传功能.使用该标签时,要在web.xml中声明一个Seam的过滤器: <filter> <fi ...

  8. TCP客户端图片上传服务端保存本地示例

    //TCP客户端public class TCPClient { public static void main(String[] args)throws IOException { Socket s ...

  9. C# winform 窗体应用程序之图片上传Oracle数据库保存字段BLOB

    C# winform 窗体应用程序之图片上传Oracle数据库保存字段BLOB 我用的数据库是Oracle,就目前来看,许多数据库现在都倾向于Oracle数据库,对ORACLE数据库基本的操作也是必须 ...

随机推荐

  1. 我的省选 Day -10

    Day -10 今天的分数也许会比昨天更低.. 感觉2017年比远古时代的2007年的第一试难诶. 估个分数好了,我猜88分(为什么猜了一个这么吉利的数字??到时候出来没几分就啪啪啪打脸了) 和昨天一 ...

  2. 洛谷 P1547 Out of Hay (最小生成树)

    嗯... 题目链接:https://www.luogu.org/problemnew/show/P1547 思路: 嗯...既然题中已经说了是最小生成树,那么是需要在最小生成树的模板上稍作修改即可.要 ...

  3. Git工具详解以及与GitHub的配合使用

    git和Github 概念 git --- 版本控制工具(命令). 工具介绍官方网站:http://git-scm.com 工具下载地址:http://git-scm.com/download/ gi ...

  4. 牛客假日团队赛1 G.Superbull

    链接: https://ac.nowcoder.com/acm/contest/918/G 题意: Bessie and her friends are playing hoofball in the ...

  5. 转 nagios监控oracle运行状况

    https://blog.csdn.net/heizistudio/article/details/8638488 nrpe安装脚本 nagios-plugins-1.4.13.tar.gznrpe- ...

  6. LeetCode 128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence.Fo ...

  7. Java面向对象_简单工厂模式

    概念:由一个工厂对象决定创建出哪一种产品类的实例. public class Practice14 { public static void main(String[] args) { // TODO ...

  8. 对象拷贝 - 优雅的解决方案 Mapstruct

    MapStruct GitHub 访问地址 : https://github.com/mapstruct/mapstruct/ 使用例子 : https://github.com/mapstruct/ ...

  9. Javascript常见问题

    倒计时 <Script Language="JavaScript"> var timedate= new Date("October 1,2002" ...

  10. Oracle单列函数

    --字符函数--1.ASCII 返回与指定的字符对应的十进制数;select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space fr ...