C#使用webservice把文件上传到服务器

C#使用webservice把文件上传到服务器,第1张

C#使用webservice把文件上传到服务器的代码如下(这里以C:\\zhidao.jpg这个文件上传为例):

WebService部分:

/// <summary>

    /// 保存文件销锋到远程服务器

    /// </summary>

    /// <param name="FileByteArray">待转换字节数组</param>

    /// <param name="FileLength">字节长度</param>

    /// <param name="SaveToUrl">保存路径</param>

    /// <returns>返回是否执行成功</returns>

    [WebMethod(Description = "保存文件到远程服务器.")]

    public bool SaveFile(byte[] FileByteArray,int FileLength, string SaveToUrl)

  判拿  {

        try

        {

            FileStream fs = new FileStream(SaveToUrl, FileMode.OpenOrCreate, FileAccess.Write)

            fs.Write(FileByteArray, 0, FileLength)

            fs.Close()

        }

        catch {

            return false

        }

        return true

  亏冲晌  }

上传文件调用部分:

protected void Button1_Click(object sender, EventArgs e)

    {

        MangerPhoto.Service mp = new MangerPhoto.Service()

        Response.Write(mp.SaveFile(getByte(), FileUpload1.PostedFile.ContentLength, "C:\\zhidao.jpg"))

    }    private byte[] getByte() {//获得转化后的字节数组

        //得到用户要上传的文件名

        string strFilePathName = FileUpload1.PostedFile.FileName

        string strFileName = Path.GetFileName(strFilePathName)

        int FileLength = FileUpload1.PostedFile.ContentLength

        //上传文件

        Byte[] FileByteArray = new Byte[FileLength] //图象文件临时储存Byte数组

        Stream StreamObject = FileUpload1.PostedFile.InputStream //建立数据流对像

        //读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度

        StreamObject.Read(FileByteArray, 0, FileLength)

        return FileByteArray

    }

 Asp.Net 一般支持上传神并4MB大小文件罩亏,为实现上传超过4MB大小文件,Asp.Net项目需要调整配置(Web.Config)的httpRuntime节点。

<httpRuntime maxRequestLength="40960" executionTimeout="1800" />

maxRequestLength:指定输入流缓冲阈值限制(以 KB 为单位)。此限制可用于防止拒绝服务攻击;例如,因用户向服务游闷迹器发送大型文件而导致的拒绝服务攻击。

默认值为 4096 (4 MB)。

executionTimeout: 指定在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。默认值110秒。

方法/步骤

2.WEB Service 开发

要想实现断点续传或下载文件,Web Service 需要支持上传文件的部分内容,或下载文件的部分内容。本人采用上传或下载字节的方式进行Web Service 方法开发。

2.1.不支持断点续传方法

不支持断点续传方法,即客数举户端,穗竖将文件所有字节内容上传到服务器。由于网络中断,或网络异常导致上传失败时,需要重新上传。如果是比较大的文件,比如超

过4MB(Asp.Net Web 应用程序默认一般支持上传4MB大小文件),重传将浪费时间及给使用者带来不好的体验。

2.2.支持断点续传方法

支持断点续传方法,方法将提供文件内容开始位置参数,然后将上传过来的文件内容,根据文件起始位置写入文件中。

2.3.不支持断点下载方法

不支持断点下载,方法提供下载文件名称,文件比较大时(大于4MB),将不进行下载。网络中断时,需要重新进行下载。

2.4.支持断点下载方法

支持断点下载,方法除提供下载文件名称参数外,还提供下载文件起始位置及下载文件大小(方法控制每次最大下载100KB)。为了实现断点下载,同时提供下载文件信息(文件大小)方法,以便客户端知道需要下载多大文件,分多少次进行下载。

获取文件信息方法:

下载文件内容方法:

3.上传、下载工具开发

文件上传,本薯族碧文档不作介绍,有需要可百度搜索,如何通过Web Service 上传大文件方法。本文着重介绍如何实现断点下载工具开发,断点上传文件,可参考实现。

3.1.文件下载工具

工具使用VS2008 C# 语言开发Winform应用程序。文件下载工具界面设计,界面简单设计为下载文件目录、下载文件名称及保存文件目录。下载文件目录,在实际项目开发可能就是某个客户的客户账号,根据客户账号读取服务器文件,进行下载。

3.2.断点下载

本人设计-下载帮助类(SQFileDownload),记录下载文件信息及每次下载进度。出现网络中断,打开工具重新下载时,读取下载信息进行下载。

初始文件下载,读取已下载文件信息。

未下载过,进行直接下载。

已下载过,根据下载进度,进行下载。

主界面调用。

至此,整个如何通过Web Service 断点续传及下载文件,介绍、分享完毕,实现方法只做参考。

http://jingyan.baidu.com/article/915fc414ea3d8e51394b2025.html


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/8155327.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存