Faw*_*Izy 15 php c# file-upload file-transfer
目前我有一个尖锐的应用程序(客户端应用程序)和一个写PHP的Web应用程序.我想在客户端执行特定操作时传输一些文件.这是将文件上传到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);
}
Run Code Online (Sandbox Code Playgroud)
这是用于移动文件的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");
}
Run Code Online (Sandbox Code Playgroud)
我没有从上面的代码中得到任何错误.但它似乎没有起作用.为什么?我错过了什么吗?
Xen*_*non 13
您当前的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");
}
?>
Run Code Online (Sandbox Code Playgroud)
您还需要确保该./files目录存在.
我用你的C#代码测试了上面的PHP代码,它运行得很好.
有关处理文件上载的更多信息,请参阅PHP文档.
有关使用C#和PHP 上载多个文件的更多信息,以下是一些有用的链接:
使用HTTPWebrequest上传文件(multipart/form-data)
如果你想要一些简单的上传多个文件的东西,你只需要一次上传一个文件到upload.phpC#循环.