加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService上传和下载文件

发布时间:2020-12-17 00:55:20 所属栏目:安全 来源:网络整理
导读:/*上传文件的WebService*/ using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.Services; using System.IO; ///

/*上传文件的WebService*/

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.IO;

/// <summary>
/// Upload 的摘要说明。
/// </summary>
[WebService(Namespace = "http://tempuri.org/",
?? Description = "在Web Services里利用.NET框架进上载文件。")]
public class UploadFile : System.Web.Services.WebService
{
??? public UploadFile()
??? {
??? }

??? [WebMethod(Description = "Web 服务提供的方法,返回是否文件上载成功与否。")]
??? public string Upload(byte[] fs,string fileType)
??? {
??????? string FileName = System.DateTime.Now.ToString("yyyyMMddHHmmssms") +"." +fileType;
??????? try
??????? {
??????????? ///定义并实例化一个内存流,以存放提交上来的字节数组。
??????????? MemoryStream m = new MemoryStream(fs);
??????????? ///定义实际文件对象,保存上载的文件。
??????????? FileStream f = new FileStream(Server.MapPath(".") + "UploadFile"
???????????? + FileName,FileMode.Create);
??????????? ///把内内存里的数据写入物理文件
??????????? m.WriteTo(f);
??????????? m.Close();
??????????? f.Close();
??????????? f = null;
??????????? m = null;
??????????? return FileName;
??????? }
??????? catch (Exception ex)
??????? {
??????????? return null;
??????? }
??? }

??? [WebMethod(Description = "Web 服务提供的方法,删除指定文件")]
??? public void Delete(string fileName)
??? {
??????? string filePath = Server.MapPath(".") + "UploadFile" + fileName;???????
??????? File.Delete(filePath);
??? }
}

?

/*下载文件*/

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.IO;

/// <summary>
/// GetBinaryFile 的摘要说明。
/// Web Services名称:GetBinaryFile
/// 功能:返回服务器上的一个文件对象的二进制字节数组。
/// </summary>
[WebService(Namespace = " Description = "在Web Services里利用.NET框架进行传递二进制文件。")]
public class GetBinaryFile : System.Web.Services.WebService
{
??? /// <summary>
??? /// Web 服务提供的方法,返回给定文件的字节数组。
??? /// </summary>
??? [WebMethod(Description = "Web 服务提供的方法,返回给定文件的字节数组")]
??? public byte[] GetFile(string requestFileName)
??? {
??????? string fileName = Server.MapPath(".") + "UploadFile" + requestFileName;
??????? return getBinaryFile(fileName);
??? }

??? /// <summary>
??? /// getBinaryFile:返回所给文件路径的字节数组。
??? /// </summary>
??? /// <param name="filename"></param>
??? /// <returns></returns>
??? public byte[] getBinaryFile(string filename)
??? {
??????? if (File.Exists(filename))
??????? {
??????????? try
??????????? {
??????????????? ///打开现有文件以进行读取。
??????????????? FileStream s = File.OpenRead(filename);
??????????????? return ConvertStreamToByteBuffer(s);
??????????????? s.Close();
??????????? }
??????????? catch (Exception e)
??????????? {
??????????????? return new byte[0];
??????????? }
??????? }
??????? else
??????? {
??????????? return new byte[0];
??????? }
??? }

??? /// <summary>
??? /// ConvertStreamToByteBuffer:把给定的文件流转换为二进制字节数组。
??? /// </summary>
??? /// <param name="theStream"></param>
??? /// <returns></returns>
??? public byte[] ConvertStreamToByteBuffer(System.IO.Stream theStream)
??? {
??????? int b1;
??????? System.IO.MemoryStream tempStream = new System.IO.MemoryStream();
??????? while ((b1 = theStream.ReadByte()) != -1)
??????? {
??????????? tempStream.WriteByte(((byte)b1));
??????? }
??????? return tempStream.ToArray();

??? }

??? [WebMethod(Description = "Web 服务提供的方法,返回给定文件类型。")]
??? public string GetImageType()
??? {
??????? ///这里只是测试,您可以根据实际的文件类型进行动态输出
??????? return "image/jpg";
??? }
}

/*调用上传*/

string filePath = "c:test.jpg";
FileStream fs = new FileStream(filePath,FileMode.OpenOrCreate,
FileAccess.Read);
// Read the Data into the Byte Array
byte[] fileByte = new byte[fs.Length];
fs.Read(fileByte,(int)fs.Length);

UploadFile uploadfile = new UploadFile(); int indexof = filePath.LastIndexOf(".")+1; string fileExt = filePath.Substring(indexof,filePath.Length - indexof); string filename = uploadfile.Upload(fileByte,fileExt);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读