c# windows-phone-8 file-upload windows-phone background-transfer

c# - BackgroundTransferService con el método POST y los parámetros



windows-phone-8 file-upload (2)

Me encontré con un tipo similar de problema antes de algunas semanas. de alguna manera manejé esta carga de archivo por HttpClient .

Código de verificación

HttpClient client = new HttpClient(); StorageFile file = null; // assign your file here MultipartFormDataContent formdata = new MultipartFormDataContent(); formdata.Add(new StringContent("value"), "key"); formdata.Add(new StreamContent(await file.OpenStreamForReadAsync()), "file", "recordedVideoFile2.mp4"); var response = await client.PostAsync(new Uri("URL here"), formdata);

Quiero subir un archivo (VideoFile) al servidor a través de BackgroundTransferService .

Mi problema es que también quiero enviar 2 parámetros junto con Archivo (solicitud POST).

Entonces, ¿es posible enviar parámetros junto con la carga de archivos mientras se usa la API BackgroundTransferService ?

Código con BackgroundTransferService :

BackgroundTransferRequest req = new BackgroundTransferRequest(new Uri("ServerURL", UriKind.Absolute)); req.Method = "POST"; req.TransferPreferences = TransferPreferences.AllowCellularAndBattery; string uploadLocationPath = "/Shared/Transfers/myVideoFile.mp4"; string downloadLocationPath = "/Shared/Transfers/response.txt"; req.UploadLocation = new Uri(uploadLocationPath, UriKind.Relative); req.DownloadLocation = new Uri(downloadLocationPath, UriKind.Relative); req.TransferProgressChanged += req_TransferProgressChanged; req.TransferStatusChanged += req_TransferStatusChanged; try { BackgroundTransferService.Add(req); } catch (Exception ex) { MessageBox.Show("Unable to add video to upload queue./nPlease try again later.", App.appName, MessageBoxButton.OK); }

Por favor, pregunte si alguien quiere más información y no puede entender mi pregunta.

Quiero una respuesta rápida. Sí o No ... y si es así, ¿cómo ...?


No estoy 100% seguro de lo que estás tratando de hacer. Sin embargo, creo que se puede a través de encabezados HTTP.

Propiedad BackgroundTransferRequest.Headers
https://msdn.microsoft.com/en-us/library/windows/apps/microsoft.phone.backgroundtransfer.backgroundtransferrequest.headers(v=vs.105).aspx

Y como el remitente con la propiedad Tag.
https://msdn.microsoft.com/en-us/library/windows/apps/microsoft.phone.backgroundtransfer.backgroundtransferrequest.tag(v=vs.105).aspx

Esta propiedad se puede usar para asociar datos personalizados asociados con una transferencia. La aplicación puede establecer el valor cuando se crea la solicitud de transferencia. Cuando se recupera la solicitud de transferencia, usando la propiedad Requests o el método Find (String), la propiedad Tag contendrá los datos previamente establecidos. Esta propiedad solo la usa la aplicación de llamada y el sistema la ignora. La longitud máxima de esta propiedad es de 4000 caracteres, pero se recomienda mantener el tamaño de los datos más pequeños para mejorar el rendimiento.