WebClient.UploadDataAsync Method バイナリデータは、HTTP のボディ部分で送られるので、ファイル名は HTTP ヘッダにセットして渡します
using System;
using System.IO;
using System.Net;
using System.Windows.Forms;
namespace WebPut
{
public partial class Form1 : Form
{
// 読み込むファイルのパス
string image_path = @"C:\Users\sworc\Pictures\IMG0330.JPG";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
WebClient webClient = new WebClient();
// ファイル名を HTTP ヘッダーで渡す
webClient.Headers.Add("UserData", Path.GetFileName(image_path));
// イベント作成
webClient.UploadDataCompleted += (object _sender, UploadDataCompletedEventArgs _e) => {
if (_e.Error != null)
{
// エラー
Console.WriteLine(_e.Error.Message);
}
else
{
// サーバからの応答( バイト配列なのでテキストに変換 )
Console.WriteLine(System.Text.Encoding.GetEncoding("UTF-8").GetString(_e.Result));
}
};
// 画像ファイルをバイト配列に読み込む
FileStream file_stream = new FileStream(image_path, FileMode.Open, FileAccess.Read);
byte[] bin_buffer = new byte[file_stream.Length];
file_stream.Read(bin_buffer, 0, (int)file_stream.Length);
file_stream.Close();
// バイナリデータアップロード開始
string access_url = "http://localhost/php/upload/php-put.php";
webClient.UploadDataAsync(new Uri(access_url), bin_buffer);
}
}
}
PHP 側は、php://input を利用した単純なコードです。 php-put.php
<?PHP
header( "Content-Type: text/html; charset=utf-8" );
$id = uniqid();
$fp = fopen( "php://input", "rb" );
$wfp = fopen( "data/{$id}_{$_SERVER["HTTP_USERDATA"]}", "wb" );
while( $ret = fread( $fp, 4096 ) ) {
fwrite( $wfp, $ret );
}
fclose($wfp);
fclose($fp);
?>
データが保存されました
|
|
【C#の最新記事】
- C# : WebClient で JSON データを取得後 Json.NET でオブジェクト化( ついでに PropertyInfo でプロパティデータ一覧を foreach で取得 )
- C# : Microsoft Access の接続で、他の RDBMS( ここでは MySQL ) にエクスポートを行う
- C# : TKMP.DLLを使った、Gmail 用メール送信テンプレート
- C# : DataGridView を使用したナチュラルな行データの更新
- C# の delegate : メソッドの引数にメソッドを渡して使用する方法と、JavaScript の function(){} と同じ使用方法( 匿名 )
- PowerShell 移行用 C# コンソールアプリのコードテスト( ZIP 圧縮 )
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (4)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (3)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (2)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (1)
- ComboBox : C# : Form アプリケーションで良く使うコントロール / VS2012 にて
- C# バッチビルドキットで、VB の My 名前空間を使ってクリップボードを使ったり、キーボードの SHIFT キーが押されているかを知る
- printui.dll を VB.net または C# から呼び出す/ DllImport で LoadLibraryA / VS2010
- LINQ で List
のソート - VS2010(C#)WPF : ListView 内に GridView を配置する
- Windows ストア用の System.Collections.Generic 名前空間には、SortedList はありません。
- 情報が全くみつからない Microsoft.Live
- VS2010(C#) バッチ(コンソールアプリ) Twitter 投稿
- Windows8(C#) の WebView の LoadComplete で取得した URL 内のアクセストークンを Split で取得
- Facebook C# SDK の 5.4.1.0 のダウンロード




























