微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过WebService上传任何类型的文件

通过WebService上传任何类型的文件

1.简介

本文描述了一种方法,通过Web服务从Windows窗体应用程序,可用于所有类型的文件上传。证明的方法不依赖于ASP.NET文件上传控件,并允许开发人员有机会上传文件的编程,而无需用户干预。这种做法可能是有用的,做这样的事情处理本地消息队列中的内容时,互联网服务是可用的(如果用户群是移动,只有间歇性的连接)。文章还讨论了为先导,以允许文件上传,通过服务使用的文件大小检查。

2.服务器端WebService编写

首先在VS中创建一个Webservice工程,并在WebService中编写如下方法

  1. [WebMethod]  
  2. public string UploadFile(byte[] f, string fileName)  
  3. {  
  4.     try  
  5.     {  
  6.         MemoryStream ms = new MemoryStream(f);  
  7.   
  8.         FileStream fs = new FileStream  
  9.             (System.Web.Hosting.HostingEnvironment.MapPath  
  10.             ("~/TransientStorage/") +  
  11.             fileName, FileMode.Create);  
  12.   
  13.         ms.Writeto(fs);  
  14.         ms.Close();  
  15.         fs.Close();  
  16.         fs.dispose();  
  17.         return "OK";  
  18.     }  
  19.     catch (Exception ex)  
  20.     {  
  21. return ex.Message.ToString();  
  22. }  
3.客户端窗体程序编写

客户端上传文件方法编写如下:

private void UploadFile(string filename)  
  • {  
  • try  
  •         String strFile = System.IO.Path.GetFileName(filename);  
  •         TestUploader.Uploader.FileUploader srv = new  
  •         TestUploader.Uploader.FileUploader();  
  •         FileInfo fInfo = new FileInfo(filename);  
  •         long numBytes = fInfo.Length;  
  • double dLen = Convert.Todouble(fInfo.Length / 1000000);  
  • if (dLen < 4)  // 文件上传有4M限制,超过4M的需要分割发送  
  •         {  
  •             FileStream fStream = new FileStream(filename,  
  •             FileMode.Open, FileAccess.Read);  
  •             BinaryReader br = new BinaryReader(fStream);  
  •             byte[] data = br.ReadBytes((int)numBytes);  
  •             br.Close();  
  •             service  
  • string sTmp = srv.UploadFile(data, strFile);  
  •             fStream.Close();  
  •             fStream.dispose();  
  •             message  
  •             MessageBox.Show("File Upload Status: " + sTmp, "File  
  •             Upload");  
  •         }  
  • else  
  •             MessageBox.Show("The file selected exceeds the size limit  
  •             for uploads.", "File Size");  
  •         }  
  •         MessageBox.Show(ex.Message.ToString(), "Upload Error");  
  • }  
  • 4.客户端文件上传示例

    新建一个窗体工程,并在窗体上拖放两个Button,一个TextBox控件,一个按钮是浏览文件一个按钮上传文件,TextBox显示文件路径。

    1)浏览文件代码

    void btnbrowse_Click(object sender, EventArgs e)  
  •     openFileDialog1.Title = "打开文件";  
  •     openFileDialog1.Filter = "所有文件|*.*";  
  •     openFileDialog1.FileName = "";  
  •         openFileDialog1.InitialDirectory = "C:\\Temp";  
  • catch{ }  
  •     openFileDialog1.ShowDialog();  
  • if (openFileDialog1.FileName == "")  
  • return;  
  •         txtFileName.Text = openFileDialog1.FileName;  
  • }  
  • 2)文件上传代码

    void btnUpload_Click(if (txtFileName.Text != string.Empty)  
  •         UploadFile(txtFileName.Text);  
  •         MessageBox.Show("请选择要上传文件!""没有选择文件");  
  • }  

  • 版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

    相关推荐