路径中存在非法字符
试图上传Word文档,然后将其附加到发送的电子邮件中。路径中存在非法字符
当前收到IO异常 - 路径中的非法字符。
这里是代码:
try
{
var fileName = Path.Combine(Server.MapPath("/"), ResumeUpload.FileName);
ResumeUpload.SaveAs(fileName);
using (var resumeContent = new StreamReader(fileName))
{
while (!resumeContent.EndOfStream)
{
var emailAttachement = new Attachment(resumeContent.ReadToEnd());
message.Attachments.Add(emailAttachement);
}
}
var client = new SmtpClient();
client.Send(message);
}
catch(Exception exception)
{
// Handle exception...
}
目前,文件名可变是越来越设置为:
d:\网站\ websitename \ website.com.au \家\ filename.docx
任何想法为什么这会打破?
这里的例外
Illegal characters in path. at System.IO.Path.CheckInvalidPathChars(String path)
at System.IO.Path.GetFileName(String path)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.Net.Mail.AttachmentBase.SetContentFromFile(String fileName, String mediaType)
at System.Net.Mail.Attachment..ctor(String fileName)
at JobApplication.JobApplication.SendEmail(StringBuilder emailText)
Attachment(string)
接受一个字符串的路径。 StreamReader.ReadToEnd
返回字符串内容。我怀疑你只是想:
Attachment emailAttachement = new Attachment(filename);
message.Attachments.Add(emailAttachement);
另外,使用接受一个Stream
和名称/内容类型的构造。请注意,如果您允许用户将任意文件上传到Web服务器的根目录中,则需要考虑一些事项;我会尽量避免将它们写入磁盘(除非您想将它们存档),并且我不会将它们写入到我的web根目录。
new Attachment
需要一个文件名,而不是内容。
编辑:stacktrace清楚地给出了这个提示。使用它:)
我试图使用接受Stream的Attachment构造函数,但.ReadToEnd返回一个字符串...谢谢 – timothyclifford 2010-11-03 11:20:10
尝试用这个代替
message.Attachments.Add(
new Attachment(
new MemoryStream(ResumeUpload.FileBytes), "attachmentName.ext"
)
);
此连接将上传的字节,使流他们。该流应该稍后处理。
如果任何人的兴趣,我得到了它的工作,这是它如何结束了寻找:
ResumeUpload.PostedFile.SaveAs(Path.Combine(Server.MapPath("/"), "resumes", ResumeUpload.FileName));
var emailAttachement = new Attachment(Path.Combine(Server.MapPath("/"), "resumes", ResumeUpload.FileName));
message.Attachments.Add(emailAttachement);
using (var client = new SmtpClient())
{
client.Send(message);
}
感谢大家的帮助:)
和期望是什么路? – Andrey 2010-11-03 10:58:41
ResumeUpload.SaveAs()行上的代码是否失败? – 2010-11-03 11:02:55
该路径应该很好,我试图将文件保存到该路径,然后用streamreader从它读取并附加到电子邮件作为附件。将包括异常现在的问题... – timothyclifford 2010-11-03 11:03:42