【问题标题】:Upload File attached to FileUpload Control to FTP C#将附加到 FileUpload 控件的文件上传到 FTP C#
【发布时间】:2014-02-05 02:16:34
【问题描述】:

我正在尝试将附加到 FileUpload 控件的文件上传到在 FTP 中创建的文件夹。文件夹的创建没有问题,但我似乎无法上传文件。

似乎我的源文件路径在String filePath = Server.MapPath("~" + @"\" + nameToGiveFolder); 行中不正确我尝试了文件路径的多种变体,但似乎无法上传文件。

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = FileUpload1.FileName;
    string ftphost = WebConfigurationManager.AppSettings["myHost"].ToString();
    string u = WebConfigurationManager.AppSettings["u"].ToString();
    string p = WebConfigurationManager.AppSettings["p"].ToString();
    string nameToGiveFolder = FileUpload1.FileName.ToString().Substring(0, FileUpload1.FileName.ToString().LastIndexOf("."));
    string ftpfullpath = "ftp://" + ftphost + "/" + nameToGiveFolder;
    FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
    ftp.Method = WebRequestMethods.Ftp.MakeDirectory;
    ftp.Credentials = new NetworkCredential(u, p);
    FtpWebResponse CreateFolderResponse = (FtpWebResponse)ftp.GetResponse();

    if (FileUpload1.HasFile)
    {
        try
        {
            Label1.Text = "Has File";
            String filePath = Server.MapPath("~" + @"\" +  nameToGiveFolder);
            FileUpload1.SaveAs(filePath);
        }
        catch (Exception ex)
        {
            Label1.Text = ex.ToString();
        }
    }
    else
    {
        Label1.Text = "No File";
    }
}

【问题讨论】:

    标签: c# asp.net file-upload ftp


    【解决方案1】:

    使用Path.GetFileNameWithoutExtension()。获取文件名

    FileUpload1.SaveAs(Server.MapPath(string.Format("~/{0}/{1}", Path.GetFileNameWithoutExtension(FileUpload1.FileName), FileUpload1.FileName)));
    

    请注意,您还需要提供文件名,如果文件名是abc.jpg,上面的代码尝试在您的Web端根目录下创建名为abc的文件夹并将文件保存在该文件夹中的文件姓名abc.jpg

    我认为您的String filePath = Server.MapPath("~" + @"\" + nameToGiveFolder); 行的问题只是最后有文件夹路径。当您致电FileUpload1.SaveAs 时,您需要有完整的文件路径。

    更新

    你得到错误

    System.IO.DirectoryNotFoundException:找不到一部分 路径

    因为你没有以文件名命名的目录。我不是您要放置文件的确切位置。如果要将文件放在新目录中,则需要先创建该目录。

    var folderpath = Server.MapPath(string.Format("~/{0}", Path.GetFileNameWithoutExtension(FileUpload1.FileName)));
    
    
    System.IO.Directory.CreateDirectory(folderpath); 
    
    FileUpload1.SaveAs(Path.Combine(folderpath, FileUpload1.FileName));
    

    【讨论】:

    • 感谢您的回复!当我尝试执行此操作时,我收到错误 System.IO.DirectoryNotFoundException:找不到路径“C:\Users\me\Desktop\me\mySolution\me\toUpperCase\toUpperCase.txt”的一部分。
    • 尝试稍微修改文件路径并收到此错误消息(至少它有所不同): System.Web.HttpException (0x80004005): 'ftp:/444.444.444.444/toUpperCase/toUpperCase. txt' 不是有效的虚拟路径。
    猜你喜欢
    • 2016-04-01
    • 2013-02-22
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    相关资源
    最近更新 更多