gpt4 book ai didi

c# - 在 MVC3 的控件方法中返回文件

转载 作者:行者123 更新时间:2023-11-30 21:09:54 25 4
gpt4 key购买 nike

我有一个上传管理器,我想在用户像这样调用我的控件的特殊方法时返回一个文件:

www.website.com/upload/getfile/?fileID=100

我该怎么做?我想知道如何返回文件!


我找到了答案并在下面编写了示例代码:

public FilePathResult GetFile(string Name)
{
FilePathResult s = new FilePathResult(@"C:/"+Name, "File");
Response.Headers.Clear();

return s;
}

但是现在有一个问题。如果我使用 File 作为我的 ContentType 有什么问题吗?因为我不知道。

最佳答案

创建一个名为 uploadController 的 Controller ,带有一个名为 getfile 的操作,该操作有一个参数。

那么上面的url可以改成

www.website.com/upload/getfile/100

更新:

将操作的返回类型更改为FileResult

要获得完整答案,请查看我的部分代码库:

//Attachment Class
public class Attachment
{
#region Properties

public virtual Guid AttachmentId { get; set; }
public virtual int? ContentLength { get; set; }
public virtual string ContentType { get; set; }
public virtual byte[] Contents { get; set; }
public virtual DateTime? DateAdded { get; set; }
public virtual string FileName { get; set; }
public virtual string Title { get; set; }

#endregion
}


public class AttachmentController : Controller
{
IAttachmentService attachmentService;

public AttachmentController(IAttachmentService attachmentService)
{
this.attachmentService = attachmentService;
}

public ActionResult Index(Guid id)
{
var attachment = this.attachmentService.GetById(id);
return attachment.IsNull() ? null : this.File(attachment.Contents, attachment.ContentType,attachment.FileName);
}
}

public class AttachmentModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
HttpRequestBase httpRequestBase = controllerContext.RequestContext.HttpContext.Request;
HttpPostedFileBase @base = httpRequestBase.Files[bindingContext.ModelName];
var converter = new FileConverter();
Attachment attachment = converter.Convert(
new ResolutionContext(
new TypeMap(new TypeInfo(typeof(HttpPostedFileWrapper)), new TypeInfo(typeof(Attachment))),
@base,
typeof(HttpPostedFileWrapper),
typeof(Attachment)));
}
return attachment;
}
}

public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
ModelBinders.Binders[typeof(Attachment)] = new AttachmentModelBinder();
}
}

关于c# - 在 MVC3 的控件方法中返回文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com