Webサービスを利用してファイルをWebサーバーにアップロードするのは簡単です。これは私が一般的に行う方法です。これが私のサンプルコードです。
[WebMethod]
public bool UploadFile(string FileName, byte[] buffer, long Offset)
{
bool retVal = false;
try
{
// setting the file location to be saved in the server.
// reading from the web.config file
string FilePath =
Path.Combine(ConfigurationManager.AppSettings["upload_path"], FileName);
if (Offset == 0) // new file, create an empty file
File.Create(FilePath).Close();
// open a file stream and write the buffer.
// Don't open with FileMode.Append because the transfer may wish to
// start a different point
using (FileStream fs = new FileStream(FilePath, FileMode.Open,
FileAccess.ReadWrite, FileShare.Read))
{
fs.Seek(Offset, SeekOrigin.Begin);
fs.Write(buffer, 0, buffer.Length);
}
retVal = true;
}
catch (Exception ex)
{
//sending error to an email id
common.SendError(ex);
}
return retVal;
}
しかし、ファイルをアップロードするためのステータスをパーセンテージで表示するWebサービスを開発したいのですが、ファイルのアップロードが完了すると、ファイルが完全にアップロードされたかどうかに関係なく、クライアント側でイベントが発生し、ステータスメッセージが表示されます。また、複数のリクエストを同時に処理できるルーチンを作成する必要があります。また、ルーチンはスレッドセーフである必要があります。だから、私の必要なポイントをすべて満たすルーチンを設計する方法を教えてください。ありがとう