C# WinForm上传文件至服务器

发布时间:2010年06月09日      浏览次数:700 次
/// <summary>
/// WebClient上传文件至服务器
/// </summary>
/// <param name="localFilePath">文件名,全路径格式</param>
/// <param name="serverFolder">服务器文件夹路径</param>
/// <returns></returns>
public bool Upload(string localFilePath, out string folderName,string newFileName)
{
//先创建文件夹
folderName = "";
try
{
Guid guid = Guid.NewGuid();
folderName = guid.ToString();
string diskPath = DAL.DataBaseOperator.GetValueFromApplictionConfig("diskPath");
if (!diskPath.EndsWith("/") && !diskPath.EndsWith(@""))
{
diskPath = diskPath + "/";
}
diskPath += folderName;
if (!Directory.Exists(diskPath))
{
        //服务器创建文件夹
Directory.CreateDirectory(diskPath);
}
//再上传数据
string serverFolder = DAL.DataBaseOperator.GetValueFromApplictionConfig("uploadPath");
if (!serverFolder.EndsWith("/") && !serverFolder.EndsWith(@""))
{
serverFolder = serverFolder + "/";
}
string uriString = serverFolder + folderName + "/" + newFileName;
/// 创建WebClient实例
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultCredentials;
// 要上传的文件
FileStream fs = new FileStream(newFileName, FileMode.Open, FileAccess.Read);
//判断文件大小
string strFileSize = DAL.DataBaseOperator.GetValueFromApplictionConfig("fileSize");
int fileSize = Convert.ToInt32(strFileSize) * 1024 * 1024;
if (fs.Length > fileSize)
{
MessageBox.Show("您上传的附件不能超过 " + strFileSize + "M");
return false;
}
BinaryReader r = new BinaryReader(fs);

//使用UploadFile方法可以用下面的格式
myWebClient.UploadFile(uriString,"PUT",localFilePath);
byte[] postArray = r.ReadBytes((int)fs.Length);
Stream postStream = myWebClient.OpenWrite(uriString, "PUT");

if (postStream.CanWrite)
{
postStream.Write(postArray, 0, postArray.Length);
}
else
{
MessageBox.Show("文件目前不可写!");
}
Application.DoEvents();
postStream.Close();
}
catch(Exception err)
{
//MessageBox.Show("文件上传失败,请稍候重试~");
DAL.Log.FileLogSys.FileLog.WriteLog(err.Message + err.StackTrace);
return false;
}
return true;
}
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!