using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.IO;
namespace UpDownFile
{
/**/
/// <summary>
/// UpDownFile 的摘要說明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class UpDownFile : System.Web.Services.WebService
{
//上傳文件至WebService所在服務器的方法,這里為了操作方法,文件都保存在UpDownFile服務所在文件夾下的File目錄中
[WebMethod]
public bool Up(byte[] data, string filename)
{
try
{
FileStream fs = File.Create(Server.MapPath("File/") + filename);
fs.Write(data, 0, data.Length);
fs.Close();
return true;
}
catch
{
return false;
}
}
//下載WebService所在服務器上的文件的方法
[WebMethod]
public byte[] Down(string filename)
{
string filepath = Server.MapPath("File/") + filename;
if (File.Exists(filepath))
{
try
{
FileStream s = File.OpenRead(filepath);
return ConvertStreamToByteBuffer(s);
}
catch
{
return new byte[0];
}
}
else
{
return new byte[0];
}
}
}
}
上傳:
//FileUpload1是aspx頁面的一個FileUpload控件 UpDownFile.UpDownFile up = new UpDownFile.UpDownFile(); up.Up(ConvertStreamToByteBuffer(FileUpload1.PostedFile.InputStream), FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("\\") + 1));
下載: UpDownFile.UpDownFile down = new UpDownFile.UpDownFile(); byte[] file = down.Down(Request.QueryString["filename"].ToString()); //filename是要下載的文件路徑,可自行以其它方式獲取文件路徑 Response.BinaryWrite(file);
以下是將文件流轉換成文件字節的函數(因為Stream類型的是不能直接通過WebService傳輸):
protected byte[] ConvertStreamToByteBuffer(Stream s)
{
BinaryReader br = new BinaryReader(stream);
byte[] fileBytes = br.ReadBytes((int)stream.Length);
return fileBytes;
} |