この jQuery プラグインは、生成されたすべての入力コントロールにまったく同じ name 属性を与えていました。
このため、ファイルは投稿されませんでした。
独自の JavaScript ソリューションを構築しました。
コードへのリンクをコメントに投稿します。
編集
私はこれを再訪し、私がやろうとしていたことはまったく難しいことではないことがわかりました. jquery 複数ファイル アップロード プラグインが aspx フォームで正常に動作するようになりました。なんで今までこんなに悩んでいたのかわからない。
1.) Web フォームに jQuery ライブラリを含めます。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" />
2.) Web フォームで複数ファイル プラグインを参照します (ここからダウンロードします)。
<script src="jquery.MultiFile.pack.js" type="text/javascript">
3.) class="multi" を使用して Web フォームにファイル入力を追加します。
<input type="file" class="multi" />
4.) フォーム送信時にコードを実行するか、次のようなメソッドを呼び出します。
void SendMail(string from, string to, string subject, string body, string smtpServer)
{
// create mail message
MailMessage mail = new MailMessage(from, to, subject, body);
// attach posted files
for (int i = 0; i < Request.Files.Count; i++)
{
HttpPostedFile file = Request.Files[i];
mail.Attachments.Add(new Attachment(file.InputStream, file.FileName));
}
//send email
new SmtpClient(smtpServer).Send(mail);
}
aspx ページから送信された電子メールに複数のファイルを添付するために必要な作業はこれだけです。
アップロードできるファイルの合計サイズを増やしたい場合は、これを web.config ファイルに追加します。
<system.web>
<httpRuntime executionTimeout="240" maxRequestLength="30720"/>
</system.web>
executionTimeout は秒単位で測定され、maxRequestLength はキロバイト単位で測定されます。この例では、リクエストは 4 分後にタイムアウトになり、30 MB のリクエストが許可されます。