为客户端上的每个文件添加额外的文件属性,并从服务器上的请求对象中读取所有文件属性

Posted

技术标签:

【中文标题】为客户端上的每个文件添加额外的文件属性,并从服务器上的请求对象中读取所有文件属性【英文标题】:Adding extra file properties to each file on the client and read all the file properties from the request object on the server 【发布时间】:2020-04-19 21:57:58 【问题描述】:
private CertificateAttachement AssignAttachmentValues()
    
        CertificateAttachement resourceCertificateAttachment = new CertificateAttachement();
        byte[] fileByte;
        foreach (var file in Request.Form.Files)
        
            if (file.Length > 0)
            
                using (var ms = new MemoryStream())
                
                    file.CopyTo(ms);
                    fileByte = ms.ToArray();
                    resourceCertificateAttachment.DocumentMimeType = file.ContentType;
                    resourceCertificateAttachment.DocumentContent = fileByte;
                    resourceCertificateAttachment.DocumentName = file.FileName;
                    ms.Close();
                
            
        
        return resourceCertificateAttachments;
    

这是 WebAPI 中用于读取控制器中的文件属性的代码。如何在客户端添加每个文件的额外属性并在服务器端读取。有没有内置的方法可以做到这一点....?

【问题讨论】:

【参考方案1】:

您可以在客户端使用FormData 执行此操作,如下所示:

uploadFile(file: File,docId:number): Observable<HttpEvent<any>> 
    let formData = new FormData();
    formData.append('upload', file);
    formData.append('docId', String(docId));
    let params = new HttpParams();
    const options = params: params;
    const req = new HttpRequest('POST', "yourUrl", formData, options);
    return this.http.request(req);
  

在您的 dotnet API 端,您可以获取所有文件以及传递的参数。

 public HttpResponseMessage UploadDocs()
    
        var PostedParamValues = HttpContext.Current.Request.Form;
        if (HttpContext.Current.Request.Files.Count == 0)
        
            //No files found
        
        var file = HttpContext.Current.Request.Files;//all files
        var data = PostedParamValues.AllKeys // all parameters passed

        foreach (string kvp in PostedParamValues.AllKeys)
        
            var value = PostedParamValues[kvp];//getting the values of param passed
        

        return Request.CreateResponse(HttpStatusCode.OK, "Files uploaded");
    

【讨论】:

以上是关于为客户端上的每个文件添加额外的文件属性,并从服务器上的请求对象中读取所有文件属性的主要内容,如果未能解决你的问题,请参考以下文章

删除额外的正文参数或将 WebGetAttribute/WebInvokeAttribute 上的 BodyStyle 属性设置为 Wrapped

核心数据 - 向 xcddatamodel 文件添加额外属性后应用程序崩溃

删除初始屏幕上的状态栏[关闭]

是否可以在 MATLAB 中为每个文件定义多个函数,并从该文件外部访问它们?

在 Windows 批处理文件中将输入管道输入到 Plink 会添加额外的换行符

如何使用 xmlstarlet 为 xml 文件的每个节点添加不同的属性