Я пытаюсь переместить некоторый унаследованный код C#
MVC в общую DLL. До сих пор все шло хорошо, но меня попросили, чтобы эта общая DLL никоим образом не ссылалась на System.Web
.
Единственный тип, используемый в этой DLL из System.Web, — это 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;
}
Как видите, здесь не нужны никакие функции HTTP или Web, так как используются только его члены FileName
и SaveAs()
.
Есть ли замена, которую я могу легко преобразовать в HttpPostedFileBase
в вызывающем объекте, чтобы все, что мне нужно было передать в качестве параметра, это не веб-файл?
Примечание. HttpPostedFileBase
наследуется напрямую от System.Object
, а не от какого-либо файлового класса.
file.SaveAs(fileTarget)
в его исходном коде: он также передает поток. - person Not So Sharp   schedule 27.03.2016