将附加到FileUpload控件连接到FTP C#的文件上传文件



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

似乎我对源文件的filepath在行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";
    }
}

使用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.ilectorynotfoundexception:找不到该部分的一部分 路径

因为您没有名称名称的目录。我不是您要把文件放在哪里。如果要将文件放入新目录中,则需要先创建该目录。

var folderpath = Server.MapPath(string.Format("~/{0}", Path.GetFileNameWithoutExtension(FileUpload1.FileName)));

System.IO.Directory.CreateDirectory(folderpath); 
FileUpload1.SaveAs(Path.Combine(folderpath, FileUpload1.FileName));

最新更新