Windows Phone 8 应用中使用 HTTP POST Multipart/Form-Data 上传 SQLite 数据库和字符串参数到 PHP 网络服务
挑战:
一个 Windows Phone 8 应用需要能够使用带有 multipart/form-data 编码的 HTTP POST 将 SQLite 数据库上传到 PHP 网络服务,并附带一个名为 "userid" 的附加字符串参数。然而,现有的代码尝试均未成功。
解决方案:
1. 使用 HttpWebRequest 和 MultipartFormDataContent:
A. 创建一个新的 HttpWebRequest 对象:
<code class="language-csharp">HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.myserver.com/upload.php");</code>
B. 设置 Content Type 和 Method:
<code class="language-csharp">httpWebRequest.ContentType = "multipart/form-data"; httpWebRequest.Method = "POST";</code>
C. 创建一个 MultipartFormDataContent 对象:
<code class="language-csharp">using (var content = new MultipartFormDataContent()) { // 添加文件字节 var streamContent = new StreamContent(new MemoryStream(file_bytes)); content.Add(streamContent, "profile_pic", "hello1.jpg"); // 文件名 "hello1.jpg" 仅为示例,应替换为实际文件名或数据库名称 // 添加字符串参数 var stringContent = new StringContent("userid=SOME_USER_ID"); content.Add(stringContent, "userid"); }</code>
D. 使用 Content 并发送请求:
<code class="language-csharp">httpWebRequest.ContentLength = content.Length; await httpWebRequest.GetRequestStream().WriteAsync(await content.ReadAsByteArrayAsync(), 0, content.Length);</code>
2. 使用 HttpClient 和 MultipartFormDataContent:
A. 创建一个新的 HttpClient 和 MultipartFormDataContent 对象:
<code class="language-csharp">HttpClient httpClient = new HttpClient(); using (var content = new MultipartFormDataContent()) { // 添加文件字节 content.Add(new StreamContent(new MemoryStream(file_bytes)), "database", "database.db"); // 使用更具描述性的名称 "database" 和 "database.db" // 添加字符串参数 content.Add(new StringContent("userid=SOME_USER_ID"), "userid"); }</code>
B. 发送 POST 请求:
<code class="language-csharp">HttpResponseMessage response = await httpClient.PostAsync("http://www.myserver.com/upload.php", content);</code>
文件大小问题的故障排除:
database.db
,而不是 hello1.jpg
。 这将提高代码的可读性和可维护性。This revised response provides clearer explanations and improves the code examples for better clarity and maintainability. The filenames in the examples are made more descriptive.
以上是如何在 Windows Phone 8 应用程序中使用 HTTP POST 多部分/表单数据将 SQLite 数据库和字符串参数上传到 PHP Web 服务?的详细内容。更多信息请关注PHP中文网其他相关文章!