从 multipart/form-data 接收带有 servicestack 的文件

Posted

技术标签:

【中文标题】从 multipart/form-data 接收带有 servicestack 的文件【英文标题】:Receive file with servicestack from multipart/form-data 【发布时间】:2020-05-30 09:00:43 【问题描述】:

我将表单作为多部分/表单数据从反应应用程序提交到 .net 后端。我使用 FormData 对使用 axios 发布数据做出反应。在服务器端,我使用 servicestack 处理数据,我设法弄清楚了文本输入,但我不知道如何接收文件输入。

这就是我从 react 提交表单的方式

handleSubmit = event => 
        event.preventDefault();
        var form = document.getElementById("imageForm"); // You need to use standard javascript object here
        var formData = new FormData(form);

        axios.post('http://myurls.com', formData, headers:  'Content-Type': 'multipart/form-data' )
        .then(res=>
            console.log(res);
        ) 
        .catch(error =>
            console.log(error);
        )
    

这是我的 servicestack C#


    #region PLUGIN
    public class FormSubmit : IPlugin
    
        public void Register(IAppHost appHost)
        
            appHost.RegisterService(typeof(FormSubmitService));
        
    

    #endregion

    #region SERVICE
    public class FormSubmitService : ServiceStack.Service
    
        public object Post(FormSubmitRequest request)
        
            return request;
        
    
    #endregion

    #region REQUEST
    [Route("/myservice/submitform")]
    public class FormSubmitRequest : IReturn<object>
    
        public object ImageFile  get; set; 
        public string ImageTitle  get; set; 
        public string ImageDescription  get; set; 

    
    #endregion

我对 C# 非常陌生,我无法确定问题所在。我的猜测是 ImageFile 的数据类型,我尝试将其设置为 objectstringbytes[]System.Web.UI.WebControls.Image,但这似乎没有任何区别。

当我返回请求时,我可以看到我的请求对象包含 ImageTitleImageDescription 但没有 ImageFile,甚至没有一个空键

我真的很迷茫,甚至不知道从哪里开始调试问题。

提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

这里是ServiceStack docs for handling HTTP File Uploads

【讨论】:

以上是关于从 multipart/form-data 接收带有 servicestack 的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring MVC 控制器中接收 multipart/form-data?

使用 multipart/form-data 将图像从移动应用程序上传到 API

如何用SpringBoot框架来接收multipart/form-data文件

解析多部分/表单数据,从请求后接收

AJAX上传multipart/form-data类型参数时,后台无法接收的解决方案

ajax上传文件提交时,enctype=multipart/form-data怎么带过去?