日期:2014-05-18  浏览次数:20794 次

请教下关于WinForm上传文件的问题,谢谢!
这个是我在网上找到的一个类 处理上传下载文件的:
C# code

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Xml.Linq;
using System.Windows.Forms;
using System.IO;
using System.Net;

public class UploadInfo
{
    public static bool UploadFile(string localFilePath, string serverFolder, bool reName)
    {
        string fileNameExt, newFileName, uriString;
        if (reName)
        {
            fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf(".") + 1);
            newFileName = DateTime.Now.ToString("yyMMddhhmmss") + fileNameExt;
        }
        else
        {
            newFileName = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1);
        }

        if (!serverFolder.EndsWith("/") && !serverFolder.EndsWith("\\"))
        {
            serverFolder = serverFolder + "/";
        }
        uriString = serverFolder + newFileName;   //服务器保存路径
        /**/
        /// 创建WebClient实例
        WebClient myWebClient = new WebClient();
        myWebClient.Credentials = CredentialCache.DefaultCredentials;

        // 要上传的文件
        FileStream fs = new FileStream(newFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
        //FileStream fs = new FileStream(newFileName, FileMode.Open, FileAccess.Read);
        BinaryReader r = new BinaryReader(fs);

        try
        {
            //使用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("文件目前不可写!");
            }
            postStream.Close();
        }
        catch
        {
            //MessageBox.Show("文件上传失败,请稍候重试~");
            return false;
        }

        return true;
    }

    /**/
    /// <summary>
    /// 下载服务器文件至客户端
    /// </summary>
    /// <param name="uri">被下载的文件地址</param>
    /// <param name="savePath">另存放的目录</param>
    public static bool Download(string uri, string savePath)
    {
        string fileName;  //被下载的文件名
        if (uri.IndexOf("\\") > -1)
        {
            fileName = uri.Substring(uri.LastIndexOf("\\") + 1);
        }
        else
        {
            fileName = uri.Substring(uri.LastIndexOf("/") + 1);
        }


        if (!savePath.EndsWith("/") && !savePath.EndsWith("\\"))
        {
            savePath = savePath + "/";
        }

        savePath += fileName;   //另存为的绝对路径+文件名

        WebClient client = new WebClient();
        try
        {
            client.DownloadFile(uri, savePath);
        }
        catch
        {
            return false;
        }

        return true;
    } 
}




这个是我调用的部分:

C# code

Boolean flag = UploadInfo.UploadFile(textBox1.Text, "/Uploads/", false);

                if (flag)
                {
                    MessageBox.Show("上传成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    textBox1.Text = "";
                }
                else
                {
                    MessageBox.Show("文件上传失败!", "警告!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }


现在的问题是:

1,我这个是WinForm形式的,不是asp.net形