我正在Umbraco CMS上實施剃鬚刀聯繫表格,其中包括使用.Net的MailMessage創建和發送電子郵件的內聯C#腳本。最終用戶現在需要能夠上傳文件,並將其作爲附件添加到電子郵件中。剃刀形式 - 上傳並附加到電子郵件
據我所知,唯一的辦法是上傳到磁盤,然後從磁盤加載附件。
是否可以在不寫入磁盤的情況下進行上載和附加操作?請記住,沒有代碼隱藏或控制器 - 這是所有內聯剃刀邏輯。
我正在Umbraco CMS上實施剃鬚刀聯繫表格,其中包括使用.Net的MailMessage創建和發送電子郵件的內聯C#腳本。最終用戶現在需要能夠上傳文件,並將其作爲附件添加到電子郵件中。剃刀形式 - 上傳並附加到電子郵件
據我所知,唯一的辦法是上傳到磁盤,然後從磁盤加載附件。
是否可以在不寫入磁盤的情況下進行上載和附加操作?請記住,沒有代碼隱藏或控制器 - 這是所有內聯剃刀邏輯。
您需要從上傳的文件傳遞InputStream
到MAILMESSAGE的Attachment
構造:
if(IsPost && Request.Files.Count > 0){
var file = Request.Files[0];
var fileName = file.FileName;
var attachment = new Attachment(file.InputStream, fileName);
...
...
確保(除非你正在使用的文件上傳助手),你的窗體的方法設置爲POST
,添加enctype
屬性的值爲multipart/form-data
,並且您爲input type=file
提供了name
屬性。
我不確定剃鬚刀有多可能,但應該可以上傳並附加到電子郵件而不保存到磁盤。使用您從上傳控件的FileUpload.FileContent property獲得的流。然後將其傳遞給MailMessage附件的this constructor。
另外,爲什麼不使用代碼隱藏?
沒有代碼隱藏,因爲我正在使用下載的剃鬚刀一體式聯繫表單的CMS內容系統。我正在避免重新發明輪子。 – Savage
謝謝。我試圖看看Request.Files,但它給了我一個零的計數。 – Savage
沒有更多信息,很難診斷爲什麼可能。仔細檢查我所說的事情。 –
我遇到了嵌套表單的問題。一旦我欺騙了表單標籤,你的代碼示例工作正常。 – Savage