我的设置:asp.net mvc Web应用程序,带有带有fileUpload和send按钮的简单电子邮件表单。
电子邮件已正确发送,并且已附加文件-但附件为空。调试控制器将在表达式中提供InputStream.ReadTimeoutvar myFiles = model.MyFiles;
(请参见下面的控制器代码)。
型号(仅零件)
public List<HttpPostedFileBase> MyFiles { get; set; }
public List<EmailAttachments> Attachments { get; set; }
的HTML
<form id="data" method="post" enctype="multipart/form-data">
<input id="files" type="file" aria-label="files" multiple="multiple" name="MyFiles">
</form>
<input type="button" class="btn k-button k-primary" id="send" value="Send" />
Java脚本
$(function () {
$("#send").click(function () {
var form = $("#data");
var formData = new FormData(form[0]);
var files = form.find("#files")[0].files;
$.each(files, function() {
var file = $(this);
formData.append(file[0].name, file[0]);
});
$.ajax({
type: "POST",
url: url,
data: formData,
contentType: false,
processData: false,
success: function (response) {
alert("Success");
},
error: function (response) {
alert("Error");
}
});
});
控制者
[HttpPost]
public ActionResult SendCompanyEmail(GeneralEmailViewModel model)
{
...
var myFiles = model.MyFiles; // here occurs the ReadTimeout
if (myFiles != null)
{
foreach (var file in myFiles)
{
if (file != null && file.ContentLength > 0)
{
MemoryStream stream = new MemoryStream(file.ContentLength);
stream.Position = 0;
attachements.Add(new EmailAttachments
{
FileName = file.FileName,
ContentType = file.ContentType,
Stream = stream,
});
}
}
}
// ... code for sending the email ...
}
有什么建议可能引起ReadTimeout的原因以及如何解决?
用于构建附件的控制器代码错误。我找到了一个工作代码:
if (myFiles != null)
{
foreach (var file in myFiles)
{
if (file != null && file.ContentLength > 0)
{
//MemoryStream stream = new MemoryStream(file.ContentLength);
//stream.Position = 0;
attachements.Add(new EmailAttachments
{
FileName = file.FileName,
ContentType = file.ContentType,
Stream = file.InputStream
});
}
}
}
所述InputStream.ReadTimeout仍然可以在调试控制器时,可以读出的消息。我想不通这是否只是毫无意义的徒劳信息。
无论如何,在我的原始帖子中概述的方法以及上面给出的更正可以正确地用于上传文件并将其转换为电子邮件附件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句