如何在c#中检索字符串formData js

Posted

技术标签:

【中文标题】如何在c#中检索字符串formData js【英文标题】:How can retrieve string formData js in c# 【发布时间】:2015-07-17 21:48:26 【问题描述】:

我必须在 .net 的 web api 中检索“idPerson”的值。 我已经检索到文件“UploadedImage”。但我无法检索“idPerson”的值。

有人有解决办法吗?

谢谢!

我的js函数

        /**
        * Upload de l'image de profil
        * @method uploadFile
        * @private
        */
        uploadFile: function () 
            var data = new FormData(), files, ajaxRequest;

            files = $("#fileUpload").get(0).files;

            // Ajout de l'image uploadé vers les données du form
            if (files.length > 0) 
                data.append("UploadedImage", files[0]);
                // Ajout de l'id du patient pour calculer le GUID 
                data.append("idPerson", this.vm.idPerson);
            

            return data;
        ,

我的网络接口:

 /// <summary>
    /// Méthode d'upload de la photo de profil du patient
    /// </summary>
    /// <returns>Etat du téléchargement de l'image</returns>
    public MessageOutCoreVm UploadImg()
    
        string fileSavePath = string.Empty;
        string virtualDirectoryImg = "UploadedFiles";
        string fileName = string.Empty;

        if (HttpContext.Current.Request.Files.AllKeys.Any())
        
            // Get the uploaded image from the Files collection
            var httpPostedFile = HttpContext.Current.Request.Files["UploadedImage"];
            fileName = httpPostedFile.FileName;

            if (httpPostedFile != null)
            
                // OBtient le path du fichier 
                fileSavePath = Path.Combine(HttpContext.Current.Server.MapPath("~/UploadedFiles"), httpPostedFile.FileName);

                // Sauvegarde du fichier dans UploadedFiles sur le serveur
                httpPostedFile.SaveAs(fileSavePath);
            

            return MessageOutCoreVm.SendSucces(virtualDirectoryImg + '/' + fileName);
        
        else
        
            return MessageOutCoreVm.SendValidationFailed("");
        
    

【问题讨论】:

【参考方案1】:

假设您正在发送典型的 Ajax POST 请求,您可以从 HttpContext.Current.Request.Form 集合中检索每个字段。

只需在集合中找到您的密钥,例如 HttpContext.Current.Request.Form["KEY"]

TBH 如果你没有提供发送数据的方式,很难说如何检索任何值。

【讨论】:

【参考方案2】:

Request.Form["KEY"] 在我的 MVC 控制器中工作。

【讨论】:

【参考方案3】:

HTML:

<input id="image-file" type="file" onchange="SavePhoto(this)"/>

JavaScript:

<script type="text/javascript">

function SavePhoto()

     var photo = document.getElementById("image-file").files[0];  // file from input
     var req = new XMLHttpRequest();
     var formData = new FormData();

    formData.append("photo", photo );
    req.open("POST", '/upload/image2/');
    req.send(formData);       

</script>

C# 控制器:

    [HttpPost]
    public void Image2()
    
        HttpPostedFileBase img2 = Request.Files["photo"];
        string path = @"D:\Server\Image\Newred\" + img2.FileName;
        img2.SaveAs(path);
    

【讨论】:

以上是关于如何在c#中检索字符串formData js的主要内容,如果未能解决你的问题,请参考以下文章

如何将命名空间检索到字符串 C#

检索 Html 标记 C# 的内部文本

如何使用 c# 从 azure blob 存储中检索 xml 文件

c# 后台接收formdata对象

FormData如何向后端传递数组

js模拟发送 FormData数据