Lightswitch文件上传(WCF版)

思路:

1、建立server端的上传模块

2、建立WCF服务接口

3、配置web.config文件

4、建立client端的脚本


一、建立server端的上传过程(废话不多说,直接上代码)

Imports System.Net.WebClient
Imports System.IO
Imports System.Net
Public Module ftpHelper
    Private ReadOnly SMTPuserid As String = "登录名"
    Private ReadOnly SMTPpassword As String = "登录密码"

    Public Sub FtpUpload(ByVal filename As String, ByVal byt() As Byte)
        Dim fwc As New WebClient
        fwc.Credentials = New NetworkCredential(SMTPuserid, SMTPpassword)
        Dim add As String = "ftp://bxu2359560474.my3w.com/myfolder/" + filename
        fwc.UploadData(add, byt)
    End Sub
End Module

二、建立WCF服务接口

选择server点右键->添加->新建项->web->WCF服务,输入名称FtpService,此时会建立两个文件(FtpService,IFtpService)。

Imports System.ServiceModel
Imports System.ServiceModel.Activation
' 注意: 使用上下文菜单上的“重命名”命令可以同时更改代码、svc 和配置文件中的类名“FtpService”。
' 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 FtpService.svc 或 FtpService.svc.vb,然后开始调试。
Namespace LightSwitchApplication
    <AspNetCompatibilityRequirements(
        RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>
    Public Class FtpService
        Implements IFtpService

        Public Function FtpUpload(filename As String, byt() As Byte) As Boolean Implements IFtpService.ftpUp
            Try
                ftpHelper.FtpUpload(filename, byt)
            Catch ex As Exception
                Return False
            End Try
            Return True
        End Function
    End Class
End Namespace

Imports System.ServiceModel
Imports System.ServiceModel.Web
' 注意: 使用上下文菜单上的“重命名”命令可以同时更改代码和配置文件中的接口名“IFtpService”。
<ServiceContract()>
Public Interface IFtpService
    <OperationContract()>
<WebInvoke(Method:="POST", BodyStyle:=WebMessageBodyStyle.Wrapped, ResponseFormat:=WebMessageFormat.Xml)>
    Function ftpUp(filename As String, byt() As Byte) As Boolean
End Interface

看对应代码就知道是对应哪个文件了。


三、配置web.config文件

打开web.config,找到<system.serviceModel>,拉到最后就能找到

  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <behaviors>
      <!-- 服务行为 -->
      <serviceBehaviors>
        <behavior>
          <dataContractSerializer maxItemsInObjectGraph="6553600" />
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    
    <bindings>
      <webHttpBinding>
        <binding maxReceivedMessageSize="6553600" />
      </webHttpBinding>
      
      <basicHttpBinding>
        <binding name="FtpServiceBinging" maxReceivedMessageSize="52428800">
          <security mode="None">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    
    <services>
      <service name="LightSwitchApplication.FtpService">
        <endpoint address="FtpService.svc" bindingConfiguration="FtpServiceBinging" binding="basicHttpBinding" contract="IFtpService" />
      </service>
    </services>
  </system.serviceModel>

这里面我也不是全明白。对应版本是VS2013。照了2015的书试了半天都是错了。上面这个代码是最后修改成功的。最大附件在20M左右。

<binding name="FtpServiceBinging" maxReceivedMessageSize="52428800">
 这是控制上传文件大小的。不知道为什么目前只能上传到20M。求高手解答。


四、建立client端的脚本(这个好理解)

	Private Sub OpenfileUpload()
            Dispatchers.Main.Invoke(
                Sub()
                    Dim openDialog As New OpenFileDialog
                    openDialog.Multiselect = False
                    openDialog.Filter = "All File|*.*"
                    If openDialog.ShowDialog = True Then
                        If openDialog.File.OpenRead.Length > 20971520 Then
                            Me.ShowMessageBox("考虑到服务器的存储量,请选择小于20M的文件上传!")
                        Else
                            Dim fileData As FileStream = openDialog.File.OpenRead
                            If fileData.Length > 0 Then

                                Dim fileBArray(fileData.Length - 1) As Byte
                                fileData.Read(fileBArray, 0, fileData.Length)
                                Me.ShowMessageBox(fileData.Length)
                                fileData.Close()
                                fileData.Dispose()

                                Dim ftpupload As New fttp.FtpServiceClient
                                ftpupload.ftpUpAsync("ddd4.txt", fileBArray)
                            End If
                        End If
                    End If
                End Sub)
        End Sub




在信息化浪潮的推动下,公安行业正经历着前所未有的变革。随着5G、大数据、云计算、人工智能等技术的飞速发展,公安工作对时空大数据的渴求日益迫切,科技兴警、数据赋能已成为未来发展方向。《公安机关“十四五”规划(2021-2025年)》《关于加强公安大数据智能化建设应用的指导意见》等重要文件及会议精神,为公安信息化建设指明了道路。公安信息化不仅关乎打击犯罪、维护社会稳定,更在大型活动安保、便民服务等方面发挥着不可替代的作用。面对城市高速发展和人口快速涌入带来的治安维稳压力,以及新型犯罪手段层出不穷的挑战,传统工作模式已力不从心,而信息化手段则成为提升警务效能的关键。 GIS技术作为公安信息化的重要支撑,正以其独特优势赋能公安行业。超图BitDC技术体系等先进解决方案,为公安信息化建设保驾护航。这些技术不仅支持三维、数据类别广、体量大,还实现了桌面、WEB、移动、VR、AR全端支持,满足了公安工作对时空数据治理及应用的高要求。云原生GIS支撑构建的PGIS2.0平台,通过分布式存储与计算、智能运维等技术,实现了平台支撑能力的全面升级。同时,边缘计算、全国产化方案等技术的应用,进一步提升了公安信息化的安全性和可靠性。在数据处理和分析方面,大数据智能分析技术通过多源、全量、实时公安大数据的处理,提供了地理围栏、封控圈等新型空间分析算子,为公安工作提供了强有力的数据支撑。此外,公安信息化应用还实现了大数据存储、分布式GIS支持等功能,为实战分析提供了更多可能。 在实际应用中,GIS技术已广泛应用于公安行业的各个领域。以某省公安时空信息支撑平台为例,该平台汇聚了海量二三维地理数据,通过快展示、速上图、稳支撑等技术手段,实现了十余警种数据的快速接入和灵活应用。在某市公安局大数据平台,地址时空库、人口时空库等时空数据库的建设,为警务工作提供了更为精准的数据支持。同时,多端应用全覆盖的警务综合态势系统,通过大屏展示、地理资源门户等方式,全面支撑了警务业务应用。此外,智慧监所、可视化指挥调度平台等实战应用系统的建设,也进一步提升了公安工作的智能化水平。这些成功案例不仅展示了GIS技术在公安行业的应用成果,更为未来智慧警务的发展提供了宝贵经验。在趣味性和知识性方面,这些技术的应用不仅让公安工作更加高效便捷,也让公众对公安工作有了更深入的了解和认识。对于写方案的读者而言,这些案例和技术创新点无疑将为他们提供丰富的灵感和参考。 综上所述,GIS技术正以其独特优势引领公安行业信息化迈向新高度。随着技术的不断发展和应用的不断深化,未来智慧警务将呈现出更加智能化、高效化、便捷化的特点。公安行业应紧跟时代步伐,充分利用信息化手段提升警务效能,为维护社会稳定和人民安全作出更大贡献。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值