如何使用webservice将文件从客户端machin上传到服务器

时间:2016-10-26 06:57:26

标签: asp.net web-services

如何使用webservice

将文件从客户端machin上传到服务器

我使用C#创建了webservice。这需要文件路径/ url(来自客户端pc的对象,不在任何地方托管),转换为字节数组。并使用它在服务器上创建一个文件.Below代码在本地机器上工作正常.I上传文件从C盘到D盘。但是当我在服务器上托管服务而不是localhost并试图访问时,文件没有上传并得到这样的消息:无法找到文件'C:\ Fileupload \ test.txt'..客户端只能发送本地机器上没有托管的文件的url无法发送字节数组。除了在服务器上创建新文件之外还有任何选项。我可以直接上传如fileuploadcontrol.Client可以使用web app或windows app或windows service上传

这是我的代码:

string uploadFolder = = @"D:\UploadFiles\"; 

[WebMethod]
public string UploadFile(string filePath)
{

try
{

byte[] f = System.IO.File.ReadAllBytes(filePath);
MemoryStream ms = new MemoryStream(f);

uploadFolder = uploadFolder + StrFilename;
// StrFilename extracted from filepath

FileStream fs = new FileStream(uploadFolder, FileMode.Create);

ms.WriteTo(fs);
ms.Close();
fs.Close();
fs.Dispose();

return "OK";
}

}
catch (Exception ex)
{
// return the error message if the operation fails
return ex.Message.ToString();
}

}

1 个答案:

答案 0 :(得分:0)

这永远不会奏效。

您的(已部署)Web服务只能访问其目录和子目录中的文件。您无法将其传递给笔记本电脑上的任何其他文件夹,并希望它能够读取其中的文件......这将是一场安全噩梦。

如果您的客户端应用程序是网页,则您需要具有文件上载控件,该控件调用接受流的Web服务。在我的代码中,我使用优秀(和免费)MultipartParser C#库来帮助我做到这一点。

否则,会有一些巨大的数量的示例,其中将向您展示如何将文件上传到网络服务。

Uploading file using WCF services

顺便说一下,为什么要将string转换为string

return ex.Message.ToString();