目前我有一个 c sharp 应用程序(客户端应用程序)。和一个 web 应用程序编写的 php。每当在客户端执行特定操作时,我想传输一些文件。这是将文件上传到 PHP 服务器的客户端代码。
private void button1_Click(object sender, EventArgs e)
{
System.Net.WebClient Client = new System.Net.WebClient();
Client.Headers.Add("Content-Type", "binary/octet-stream");
byte[] result = Client.UploadFile("http://localhost/project1/upload.php", "POST",
@"C:\test\a.jpg");
string s = System.Text.Encoding.UTF8.GetString(result, 0, result.Length);
}
这里是用于移动文件的 upload.php 文件..
$uploads_dir = './files/'; //Directory to save the file that comes from client application.
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
$name = $_FILES["pictures"]["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
我没有从上面的代码中得到任何错误。但它似乎没有用。为什么?我错过了什么吗?
最佳答案
您当前的 PHP 代码用于处理多个 文件上传,但您的 C# 代码仅上传一个 文件。
您需要稍微修改您的 PHP 代码,删除 foreach
循环:
<?php
$uploads_dir = './files'; //Directory to save the file that comes from client application.
if ($_FILES["file"]["error"] == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["file"]["tmp_name"];
$name = $_FILES["file"]["name"];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
?>
您还需要确保 ./files
目录存在。
我已经用你的 C# 代码测试了上面的 PHP 代码,它工作得很好。
有关处理文件上传的更多信息,refer to the PHP documentation .
有关使用 C# 和 PHP 上传多个 文件的更多信息,这里有一些有用的链接:
Upload files with HTTPWebrequest (multipart/form-data)
Use Arrays in HTML Form Variables
如果您想要简单地上传多个文件,您只需一次将一个文件上传到 C# 循环中的
upload.php
。
关于c# - 从 c sharp 客户端应用程序上传到 PHP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10237983/