• DevExpress(5): ASPxUploadControl上传照片后用ASPxBinaryImage展示


    DevExpress版本14.1

    效果图:

    用户单击文件上传按钮,弹出文件选择窗口;选择文件后,自动上传到服务器保存至数据库(大头照文件一般不大,放数据库便于管理 :) 也可以保存至服务器上的文件夹);然后界面使用BinaryImage控件展示照片。

    大体思路:

    (1)用户选择文件后如何自动上传?给UploadControl添加TextChanged客户端事件,当文本改变的时候,调用uploader的客户端UploadFile()方法

    (2)服务端添加FileUploadComplete事件,可以得到大头照,然后保存至数据库

    (3)BinaryImage如何刷新?因为文件上传其实是Callback提交方式,因此在FileUploadComplete事件中无法刷新BinaryImage,并且BinaryImage也没有客户端PerformCallback方法。办法是给BinaryImage套一个ASPxCallbackPanel,当文件上传结束后,调用CallbackPanel的客户端PerformCallback方法,然后在服务端刷新BinaryImage

    (4)作为补充,如果要在服务端和客户端传递一些参数那?

    一是使用服务端FileUploadComplete的e.CallbackData,可以拼接字符串,然后使用的时候再拆开,不太方便;

    二是使用Session,在服务端不同的事件之间传递参数,问题是Session是全局的,能不用尽量不用;

    三是使用ASPxHiddenField隐藏字段,虽然叫Field但是可以存放多个属性,使用还是比较方便的:)

    设计界面如下:

    关键代码:

    UploadControl用到客户端TextChanged和FileUploadComplete事件,服务端FileUploadComplete事件。

    执行顺序是:客户端TextChanged->服务端FileUploadComplete->客户端FileUploadComplete

    <dx:ASPxUploadControl ID="ASPxUploadControl1" runat="server" Width="99px" ClientInstanceName="UploadControl"
        OnFileUploadComplete="ASPxUploadControl1_FileUploadComplete">
        <ValidationSettings AllowedFileExtensions=".jpeg, .jpg, .gif" MaxFileSize="1048576"
            MaxFileSizeErrorText="文件大小不得超过1MB!">
        </ValidationSettings>
        <ClientSideEvents TextChanged="function(s, e) { UploadControl.UploadFile();}" 
            FileUploadComplete="function(s, e) { if(e.callbackData != undefined) CallbackPanel.PerformCallback(''); else alert(e.callbackData);}" />
        <BrowseButton Text="选择">
        </BrowseButton>
    </dx:ASPxUploadControl>

    还有就是给CallbackPanel添加服务端Callback事件,填充BinaryImage的ContentBytes,就实现刷新啦,这个代码就不贴出来了:)

    补充:

    如果我的照片不是保存到数据库那?那就简单了:

    (1)用ASPxImage代替ASPxBinaryImage

    (2)在UploadControl的服务端FileUploadComplete事件,通过e.CallbackData返回照片的路径

    (3)在UploadControl的客户端FileUploadComplete事件,使用Image的客户端SetImageUrl方法,就可以刷新啦:)

  • 相关阅读:
    6:定位锚点透明
    5:CSS元素类型
    4、css盒模型和文本溢出
    3、CSS属性组成和作用
    Linq to Xml读取复杂xml(带命名空间)
    经典语句
    服务器不能设置内容类型HTTP头信息后发送
    vs2015 VS-Visual Studio-IIS Express 支持局域网访问
    Mysql一些常用语句
    swfupload上传图片
  • 原文地址:https://www.cnblogs.com/wuchaochao/p/4289653.html
Copyright © 2020-2023  润新知