WebService中實現上傳下載文件


不多說,直接看代碼:

/*上傳文件的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 = "http://tempuri.org/",
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, 0, (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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM