首页 > 后端开发 > php教程 > 如何在 Windows Phone 8 中使用 HTTP POST Multipart/Form-Data 上传文件和字符串数据?

如何在 Windows Phone 8 中使用 HTTP POST Multipart/Form-Data 上传文件和字符串数据?

Patricia Arquette
发布: 2024-12-21 01:49:09
原创
333 人浏览过

How to Upload a File and String Data Using HTTP POST Multipart/Form-Data in Windows Phone 8?

在 Windows Phone 8 中使用 HTTP POST 多部分/表单数据将文件上传到服务器

您正在尝试上传 SQLite 数据库通过具有 multipart/form-data MIME 类型和附加字符串数据“userid=SOME_ID”的 HTTP POST 请求发送到 PHP Web 服务。但是,您当前的代码未按预期工作。

“multipart/form-data” MIME 类型可以传输表单数据以及复杂的二进制数据(例如文件)。它广泛用于 Web 应用程序中的文件上传。

要克服 Windows Phone 8 代码中遇到的挑战,请考虑使用以下内置函数:

  1. CreateFormBodyAsync():该函数创建一个具有指定的表单主体content.
  2. HttpUtility.UrlEncode():此函数对“userid”字符串进行 URL 编码。
  3. HttpRequest.AddString():此函数将“userid”字符串添加到请求正文中。

此处是代码的改进版本:

async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(DBNAME);
    byte[] fileBytes = null;
    using (var stream = await file.OpenReadAsync())
    {
        fileBytes = new byte[stream.Size];
        using (var reader = new DataReader(stream))
        {
            await reader.LoadAsync((uint)stream.Size);
            reader.ReadBytes(fileBytes);
        }
    }

    HttpPost(fileBytes);
}

private async void HttpPost(byte[] fileBytes)
{
    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.myserver.com/upload.php");
    httpWebRequest.ContentType = "multipart/form-data";
    httpWebRequest.Method = "POST";
    using (var formBody = new HttpFormBody())
    {
        formBody.AddString("userid", HttpUtility.UrlEncode("SOME_ID"));
        httpWebRequest.AddString(formBody.CreateFormField());
    }

    using (var dataStream = await httpWebRequest.GetRequestStreamAsync())
    {
        dataStream.Write(fileBytes, 0, fileBytes.Length);
        dataStream.Close();
    }

    var asyncResult = httpWebRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), httpWebRequest);
}
登录后复制

此修改使用 HttpRequest.AddString() 方法将“userid”字符串添加到请求正文中。它还确保文件字节附加到请求正文的末尾。通过使用这些函数,您可以有效地传输 HTTP POST 请求中的文件和附加字符串数据,满足 multipart/form-data 要求。

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

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