POST Berbilang/Borang-Data dan Penstriman Input Fail
Soalan:
Apabila menghantar fail ke perkhidmatan REST menggunakan multipart/form-data, bagaimana bait fail boleh diekstrak dengan cekap daripada aliran permintaan untuk diproses?
Jawapan:
Untuk mengekstrak bait fail daripada strim permintaan POST berbilang bahagian/data borang, pendekatan komprehensif menggunakan API awam Microsoft ialah tersedia.
Prasyarat:
Pelaksanaan Kod:
public static async Task ParseFiles( Stream data, string contentType, Action<string, Stream> fileProcessor) { // Parse multipart request content var streamContent = new StreamContent(data); streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(contentType); var provider = await streamContent.ReadAsMultipartAsync(); // Iterate through file parts foreach (var httpContent in provider.Contents) { var fileName = httpContent.Headers.ContentDisposition.FileName; if (string.IsNullOrWhiteSpace(fileName)) continue; using (Stream fileContents = await httpContent.ReadAsStreamAsync()) { // Process file bytes fileProcessor(fileName, fileContents); } } }
Penggunaan Contoh:
Untuk kaedah WCF REST "OperationContract", anda boleh melaksanakan fail tersebut pemprosesan:
public void Upload(Stream data) { MultipartParser.ParseFiles( data, WebOperationContext.Current.IncomingRequest.ContentType, MyProcessMethod); }
Dengan menggunakan pendekatan ini, pembangun boleh dengan mudah mendapatkan bait fail daripada permintaan POST berbilang/borang-data untuk pemprosesan dan penyimpanan seterusnya.
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Bait Fail dengan Cekap daripada Strim Permintaan POST Berbilang Bahagian/Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!