`
mmdev
  • 浏览: 12919612 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

windows8开发-图片云存储与流的转换

 
阅读更多

关于上传图片与下载图片

目前发现的情况是,图片是不能用中文名字的(可能与自己使用的编码方式有关吧,不确定)。如果图片路径中包含了中文名,图片数据貌似可以上传,但是在下载回来的时候会出现异常,获取到的数据为空。

(1)从本地获取图片并上传图片可以这样实现:

            FileOpenPicker openPicker = new FileOpenPicker()
            {
                //添加文件过滤器
                FileTypeFilter = { ".jpg", ".jpeg", ".png", ".bmp" },
                //设置呈现视图模式为缩略图
                ViewMode = PickerViewMode.Thumbnail,
                //设置文件选择器打开时的起始位置,此处设置为图片库
                SuggestedStartLocation = PickerLocationId.PicturesLibrary
            };

            //异步调用PickSingleFileAsync
            StorageFile file = await openPicker.PickSingleFileAsync();
            if (file != null)
            {
                m_IsResetUserHead = true;
                BitmapImage bitmap = new BitmapImage();
                bitmap.DecodePixelHeight = 120;
                bitmap.DecodePixelWidth = 120;
                using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read))
                {   
                    bitmap.SetSource(stream);
                    if (m_ImageStream == null)
                        m_ImageStream = new MemoryStream();

                    m_ImageStream.Position = 0;
                    stream.AsStream().Position = 0;
                    stream.AsStream().CopyTo(m_ImageStream);
                }
                // 设置本地头像
                UserHeadImage.Source = bitmap;
                // 将头像上传到云存储
                SaveUserHeadToCloud(m_ImageStream, file.Name, file.FileType);
不过file.name的话最好手动保证为英文字符吧。

其中stream转换为byte[]的过程如下,用作Http的上传:

byte[] fileData = new byte[m_ImageStream.Length];
m_ImageStream.Read(fileData, 0, fileData.Length);

(2)如果是下载的话,则可以这样实现:

           try
            {
                var streamReference = RandomAccessStreamReference.CreateFromUri(new Uri(uri));
                IRandomAccessStream stream = await streamReference.OpenReadAsync();
                if (stream != null)
                {
                    BitmapImage image = new BitmapImage();                   
                    image.DecodePixelHeight = 120;
                    image.DecodePixelWidth = 120;
                    image.SetSource(stream);
                    UserHeadImage.Source = image;
                }
            }
           catch
           {
               // 当网络连接错误时,头像无法实现更新
           }

其中当uri的路径包含中文时,RandomAccessStreamReference.CreateFromUri会抛出异常。




分享到:
评论

相关推荐

    windows驱动开发技术详解-part2

    本书由浅入深、循序渐进地介绍了Windows驱动程序的开发方法与调试技巧。本书共分23章,内容涵盖了 Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱 动程序中即插即...

    Windows驱动开发技术详解的光盘-part1

    本书由浅入深、循序渐进地介绍了Windows驱动程序的开发方法与调试技巧。本书共分23章,内容涵盖了Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱动程序中即插即用...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows常用控件的使用、...

    新版Android开发教程.rar

    � 谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发 既 有用又有吸引力的移动服务,并推广这些产品。 Android 进一步推进了 " 随时随地为每个人提供信息 " 这一企 业 ...

    KODExplorer 芒果云-资源管理器

    - 可以用来作为私有云存储系统,存储你的文件... - 当然你也可以用来分享文件 - Web IDE / browser code editor awesomeness - 更多场景等你来挖掘!…… #### 3.使用说明 管理员: admin/admin 普通用户:...

    苹果 HEIC 转换器 Aiseesoft HEIC Converter 1.0.12.zip

    由于 PNG 支持 PNG-8(256色)和 PNG-24(大约1670万种颜色)等大量颜色,因此PNG 是互联网图形的一种很好的文件类型。 HEIC 转换器可以为您做什么? 这种高效率的图像格式使您能够以更小的尺寸创建和存储照片,而...

    资源管理系统架构设计及开发-L1(入库).xlsx

    资源管理系统架构设计及开发-L1(入库 2051018 单选 以下哪个表空间不能设置为OFFLINE? 2051019 多选 资管系统基础功能批量导入数据,系统会对数据进行校验,校验内容是()。 2051020 多选 资管系统承载的家客驻地...

    明日科技C#开发入门及项目实战

    第8章 windows窗体 实例074 简单的登录窗体 实例075 关闭窗体提示 实例076 创建简单的mdi应用程序 实例077 实现重复高效地利用基窗体 实例078 尝试制作一个半透明渐显窗体 实例079 使窗体标题栏文字右对齐 实例080 ...

    SQLServer2000高级编程技术(part02)-想学存储过程 SQL编程 务必要看

    3.5 存储过程在数据库应用开发中的作用 3.5.1 增强数据完整性 3.5.2 复杂商业规则和约束的一致实现 3.5.3 模块化设计 3.5.4 可维护性 3.5.5 减少网络流量 3.5.6 更快的执行 3.5.7 增强了安全性 3.6 小结 3.7 练习 第...

    WINDOWS系统开发汇编语言教程

     10.3 数据转换程序  10.4 文件操作程序  10.5 动态数据的编程  10.6 COM文件的编程  10.7 驻留程序  10.8 程序段前缀及其应用  1 程序段前缀的字段含义  2 程序段前缀的应用  10.9 习题 第11章 数值...

    将Windows动态链接库移植到Linux-C/C++开发

    将Windows Dynamic Link库移植到Linux简介此存储库包含一个库,该库允许本机Linux程序从Windows DLL加载和调用函数。 作为演示,我已将Windows移植Windows动态链接库移植到Linux简介此存储库包含一个库,该库允许本...

    使用Ansible设置模块收集Windows事实并将其转换为各种报告的Ansible剧本。-Linux开发

    使用Ansible设置模块收集Windows事实并将其转换为各种报告的Ansible剧本。 Ansible Windows事实Ansible剧本的存储库,它使用Ansible设置模块收集Windows事实。 使用事实创建以下输出:RAW JSON RAW YAML格式化CSV...

    寒江独钓-Windows内核安全编程(高清完整版).part6

    Windows串口与键盘过滤驱动、Windows虚拟存储设备与存储设备过滤驱动、Windows文件系统过滤驱动、文件系统透明加密/解密驱动、Windows各类网络驱动(包括TDI过滤驱动及三类NDIS驱动),以及最新的WDF驱动开发模型。...

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    robo3t-1.3.1-windows-x86_64-7419c406.rar

    可以帮助您在管理数据库内容以及数据库代码编辑方面提供一定的开发优化方案,内置一个代码编辑区域,您可以将数据库文件放到软件上修改,结合图形化的处理方式,可以将MongoDB数据库中的文件转换为分布式的存储方式...

    robo3t-1.3.1-windows下载

    可以帮助您在管理数据库内容以及数据库代码编辑方面提供一定的开发优化方案,内置一个代码编辑区域,您可以将数据库文件放到软件上修改,结合图形化的处理方式,可以将MongoDB数据库中的文件转换为分布式的存储方式...

    SQL Server 2008商业智能完美解决方案 1/3

    开发提取、转换、加载(ETL)解决方案; 添加源代码控制系统; 通过加密和凭据保护部署的包; 用MDX和DMX查询设计器构建基于OLAP多维数据集和数据挖掘模 型的报表; 用NET代码建立并实现自定义对象; 在Microsoft ...

Global site tag (gtag.js) - Google Analytics