6

我想通过.将文件(VideoFile) 上传到服务器。 BackgroundTransferService

我的问题是,我还想连同文件(POST 请求)一起发送 2 个参数。

那么,是否可以在使用 API 时将参数与文件上传一起发送BackgroundTransferService..?

代码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);
        }

请询问是否有人想要更多信息并且无法理解我的问题。

我想要一个快速的回应。是或否.. 如果是,那么如何..?

4

2 回答 2

2

几周前我遇到了类似的问题。我以某种方式管理这个文件上传HttpClient

校验码

        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);
于 2015-05-05T08:54:52.377 回答
1

我不是 100% 确定您要做什么。但是,我相信您可以通过 HTTP 标头。

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

并作为具有标签属性的发件人。
https://msdn.microsoft.com/en-us/library/windows/apps/microsoft.phone.backgroundtransfer.backgroundtransferrequest.tag(v=vs.105).aspx

此属性可用于关联与传输关联的自定义数据。应用程序可以在创建传输请求时设置该值。当使用 Requests 属性或 Find(String) 方法检索传输请求时,Tag 属性将包含先前设置的数据。此属性仅由调用应用程序使用,系统将忽略此属性。此属性的最大长度为 4000 个字符,但建议您保持较小的数据大小以提高性能。

于 2015-05-13T18:20:19.640 回答