Ich versuche, einige C#
MVC Legacy-Code in eine gemeinsame DLL zu verschieben. Bis jetzt ging alles gut, aber ich wurde gefragt, dass diese geteilte DLL in keiner Weise auf System.Web
verweisen muss.Nicht System.Web Ersatz für HttpPostedFileBase?
Die einzige Art in dieser DLL von System.Web verwendet wird, ist HttpPostedFileBase
:
public string ChangeAttachment(int userId, HttpPostedFileBase file)
{
string attachmentsFolderPath = ConfigurationManager.AppSettings["AttachmentsDirectory"];
if (!Directory.Exists(attachmentsFolderPath))
{
Directory.CreateDirectory(attachmentsFolderPath);
}
string fileTarget = Path.Combine(attachmentsFolderPath, userId.ToString() + Path.GetExtension(file.FileName));
if (File.Exists(fileTarget))
{
File.Delete(fileTarget);
}
file.SaveAs(fileTarget);
return fileTarget;
}
Wie Sie HTTP oder Web-Funktionalität hier benötigt sehen können, ist, da nur seine FileName
und SaveAs()
Mitglieder verwendet werden.
Gibt es einen Ersatz, die ich leicht HttpPostedFileBase
es bei der Anrufer umwandeln kann, so dass alles, was ich als Parameter übergeben müssen eine nicht-Web-Datei ist?
Hinweis: erbt direkt von System.Object
, nicht aus einer Dateiklasse.
Können Sie übergeben und verwenden Sie FileName, um den Anhang anstelle der SaveAs-Methode zu kopieren? –
@MehrzadChehraz Anscheinend kann er nicht. Beachten Sie die 'file.SaveAs (fileTarget)' in seinem Quellcode: Er übergibt auch den Stream. –
@NotSoSharp dann muss er eine Schnittstelle definieren. –