我正在尝试将附加到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";
}
}
答案 0 :(得分:1)
使用Path.GetFileNameWithoutExtension()
。获取文件名
FileUpload1.SaveAs(Server.MapPath(string.Format("~/{0}/{1}", Path.GetFileNameWithoutExtension(FileUpload1.FileName), FileUpload1.FileName)));
请注意,您还需要提供文件名,如果文件名为abc.jpg
,则在上面的代码中尝试在名为abc
的Web侧根目录下创建文件夹,并将文件保存在文件名为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));