为客户端上的每个文件添加额外的文件属性,并从服务器上的请求对象中读取所有文件属性
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 中为每个文件定义多个函数,并从该文件外部访问它们?