首页 > 后端开发 > C++ > 如何在 Windows Phone 8 和 Windows 8 中通过 HTTP POST Multipart/Form-Data 上传文件?

如何在 Windows Phone 8 和 Windows 8 中通过 HTTP POST Multipart/Form-Data 上传文件?

Susan Sarandon
发布: 2025-01-21 04:04:17
原创
534 人浏览过

How to Upload Files via HTTP POST Multipart/Form-Data in Windows Phone 8 and Windows 8?

Windows Phone 8 和 Windows 8 使用 HTTP POST Multipart/Form-Data 上传文件到服务器

在 Windows Phone 8 或 Windows 8 中使用 HTTP POST multipart/form-data 将文件上传到服务器,需要遵循以下步骤:

您提供了一个尝试使用 HttpWebRequest 上传文件的代码片段。但是,代码中有一些问题需要修复:

  • var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(DBNAME); 这段代码从程序包安装目录获取文件,而不是从本地存储获取。应改为 var file = await ApplicationData.Current.LocalFolder.GetFileAsync(DBNAME);
  • var res = await HttpPost(Util.UPLOAD_BACKUP, fileBytes); 这段代码启动了一个异步 HTTP POST 请求,但它从未等待结果。应调用 res.Wait(); 来等待结果。
  • 当前实现的 HttpPost 方法不支持 multipart/form-data 请求。您需要创建一个 HttpContentMultipart 实例,并将文件内容和任何其他参数添加到 multipart 内容中。

以下是如何修改代码以使用 multipart/form-data 上传文件的示例:

<code class="language-csharp">//假设您还有一个名为“userid”的字符串变量,其中包含用户 ID
private async void HttpPost(byte[] fileBytes)
{
    HttpClient httpClient = new HttpClient();
    MultipartFormDataContent multipartContent = new MultipartFormDataContent();
    HttpContent fileContent = new ByteArrayContent(fileBytes);
    multipartContent.Add(fileContent, "file", "filename.db");
    multipartContent.Add(new StringContent(userid), "userid", "userdata.txt");

    var response = await httpClient.PostAsync("http://www.myserver.com/upload.php", multipartContent);
    // ...
}</code>
登录后复制

在 Windows 8 中,您可以使用 HttpClient 类使用 multipart/form-data 上传文件。以下是如何操作的示例:

<code class="language-csharp">//假设您还有一个名为“userid”的字符串变量,其中包含用户 ID
public async Task Upload(byte[] fileBytes)
{
    using (HttpClient httpClient = new HttpClient())
    {
        using (MultipartFormDataContent form = new MultipartFormDataContent())
        {
            form.Add(new StringContent(username), "username");
            form.Add(new StringContent(useremail), "email");
            form.Add(new StringContent(password), "password");
            form.Add(new ByteArrayContent(fileBytes, 0, fileBytes.Length), "profile_pic", "hello1.jpg");
            HttpResponseMessage response = await httpClient.PostAsync("http://www.myserver.com/upload.php", form);
            // ...
        }
    }
}</code>
登录后复制

以上是如何在 Windows Phone 8 和 Windows 8 中通过 HTTP POST Multipart/Form-Data 上传文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板