【发布时间】:2017-04-07 04:12:57
【问题描述】:
我正在尝试使用Webclient 将运行在iPad 上的Monotouch 应用程序中的二进制文件(照片)同步到我们的PHP 服务器(Windows)。正在发送和接收文件,但服务器上的二进制文件似乎已损坏,无法查看。
这是客户端代码:
static void UploadPhotos()
{
WebClient client = new WebClient ();
client.Headers.Add("Content-Type","application/octet-stream");
string sUri = GetUri();
client.UploadFile (sUri, "POST", "images/test.png");
}
这是服务器上的PHP 代码:
<?php
$uploadDir = "C:\\uploaddir\\";
foreach ($_FILES as $file_name => $file_array) {
$uploadFile = $uploadDir . $file_array['name'];
move_uploaded_file($file_array['tmp_name'], $uploadFile);
}
?>
有谁知道为什么二进制数据在上传时会损坏以及如何修复它?
更新:
确实很奇怪。我遇到的问题似乎只影响png 图像; jpeg 图像似乎是正确的。 jpeg 图像在服务器上的 Windows 资源管理器中正确显示图像尺寸,我可以预览 jpeg 图像。我测试的jpeg 图像大小约为 90 KB。 png 文件虽然没有正确显示。在 Windows 资源管理器中,png 文件不显示图像的尺寸并且无法预览。服务器上的png 文件大小较大。因此,例如,我使用以下png 图像:
http://tuxpaint.org/stamps/stamps/animals/birds/cartoon/tux.png
初始文件为 40.2 KB(41236 字节);传输后服务器上的文件大小为 45.3 KB(46468 字节)。有人知道这是怎么发生的吗?
【问题讨论】:
-
文件大小是否匹配?您是否尝试过使用来自简单 Windows 客户端的相同代码进行上传?这将有助于确定问题是客户端还是服务器。您还应该尝试上传一个小文本文件 - 服务器上是否存在文件大小限制导致问题?
标签: c# php xamarin.ios webclient