我正在尝试上传文件并将其发送到服务层进行保存,但是我一直在寻找有关 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 属性将内容作为字节数组读取,并将其与服务层可能需要的其他信息(例如 ContentTypeFileName )一起发送到您的服务层:

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/

10-11 04:34