我正在尝试上传文件并将其发送到服务层进行保存,但是我一直在寻找有关 Controller 如何获取 HTTPPostedFileBase 并将其直接保存在 Controller 中的示例。我的服务层对 web dll 没有依赖,因此我需要将我的对象读入内存流/字节吗?任何关于我应该如何解决这个问题的指示都非常感谢......
注意:文件可以通过 pdf、word 所以我可能还需要检查内容类型(可能在域服务层内......
代码:
public ActionResult UploadFile(string filename, HttpPostedFileBase thefile)
{
//what do I do here...?
}
编辑:
public interface ISomethingService
{
void AddFileToDisk(string loggedonuserid, int fileid, UploadedFile newupload);
}
public class UploadedFile
{
public string Filename { get; set; }
public Stream TheFile { get; set; }
public string ContentType { get; set; }
}
public class SomethingService : ISomethingService
{
public AddFileToDisk(string loggedonuserid, int fileid, UploadedFile newupload)
{
var path = @"c:\somewhere";
//if image
Image _image = Image.FromStream(file);
_image.Save(path);
//not sure how to save files as this is something I am trying to find out...
}
}
最佳答案
您可以使用发布文件的 InputStream 属性将内容作为字节数组读取,并将其与服务层可能需要的其他信息(例如 ContentType 和 FileName )一起发送到您的服务层:
public ActionResult UploadFile(string filename, HttpPostedFileBase thefile)
{
if (thefile != null && thefile.ContentLength > 0)
{
byte[] buffer = new byte[thefile.ContentLength];
thefile.InputStream.Read(buffer, 0, buffer.Length);
_service.SomeMethod(buffer, thefile.ContentType, thefile.FileName);
}
...
}
关于c# - 上传文件并发送到服务层,即c#类库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4991572/