带有POST方法和参数的BackgroundTransferService

时间:2015-05-05 08:46:32

标签: c# windows-phone-8 file-upload windows-phone background-transfer

我想上传文件(VideoFile)到服务器 BackgroundTransferService

我的问题是,我还想发送2个参数以及文件(POST请求)。

那么,是否可以在使用BackgroundTransferService API时发送参数和文件上传。?

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

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

我想快速回复。是或否..如果是,则如何......?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

我不是百分之百确定你想要做什么。但是,我相信你可以通过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

  

此属性可用于关联与a关联的自定义数据   传递。应用程序可以在传输请求时设置值   被建造。使用“请求”检索传输请求时   如果属性或Find(String)方法,Tag属性将包含   以前设定的数据。此属性仅供调用使用   应用程序并被系统忽略。这个的最大长度   属性是4000个字符,但建议您保留   数据大小较小,以提高性能。