L'API Web: comment accéder à multipart les valeurs d'un formulaire lors de l'utilisation de MultipartMemoryStreamProvider?
J'ai l'habitude d'utiliser MultipartFormDataStreamProvider
de processus multi-parties des demandes.
Car je veux le fichier téléchargé pour être stockées dans la mémoire, au lieu d'un fichier sur disque, j'ai modifié mon code pour utiliser MultipartMemoryStreamProvider
. Le fichier de chargement semble fonctionner très bien, mais je n'en suis plus capable d'accéder à
d'autres valeurs de forme qui sont disponibles par le biais de provider.FormData
sous MultipartFormDataStreamProvider
. Quelqu'un pourrait-il me montrer comment faire cela?
La demande brute captée par Fiddler:
POST http://myserver.com/QCCSvcHost/MIME/RealtimeTrans/HTTP/1.1
Content-Type: multipart/form-data; boundary="XbCY"
Host: na-w-lxu3
Content-Length: 1470
Expect: 100-continue
Connection: Keep-Alive
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=PayloadType
X12_270_Request_005010X279A1
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=ProcessingMode
RealTime
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=PayloadID
e51d4fae-7dec-11d0-a765-00a0c91e6fa6
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=TimeStamp
2007-08-30T10:20:34Z
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=SenderID
HospitalA
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=ReceiverID
PayerB
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=CORERuleVersion
2.2.0
--XbCY
Content-Disposition: form-data; name=Payload; filename=276_5010.edi
ISA*00*~SE*16*0001~GE*1*1~IEA*1*191543498~
--XbCY--
Mon code de contrôleur:
string payload = null;
NameValueCollection nvc = null;
string fname = null;
StringBuilder sb = new StringBuilder();
sb.AppendLine();
foreach (StreamContent item in provider.Contents)
{
fname = item.Headers.ContentDisposition.FileName;
if (!String.IsNullOrWhiteSpace(fname))
{
payload = item.ReadAsStringAsync().Result;
}
else
{
nvc = item.ReadAsFormDataAsync().Result;
}
}
Vous devez vous connecter pour publier un commentaire.
Mis à jour 4/28/2015
Vous pouvez créer un fournisseur personnalisé basé sur
MultipartFormDataRemoteStreamProvider
.Exemple:
Mis à jour
Personnalisé En mémoire MultiaprtFormDataStreamProvider:
Utilisation:
application/x-www-form-urlencoded
. Maintenant j'ai modifié mon code dans le post. Laissez-moi savoir si cela fonctionne.