SQLの窓

2017年05月29日


PHP : MastodonOAuthPHP の HttpRequest.php の http_request を public に書き換えて、ファイルアップロード

MastodonOAuthPHP

HttpRequest.php の http_request は、file_get_contents を使用した通信処理です。とてもいいサンプルですし、ソースも簡単に読めます。HttpRequest.php のみ upload_file.php と同じディレクトリに置いて実行します。

以下は http_request メソッドを public にして普通に使えるサンプルです。

upload_file.php
<?php
session_cache_limiter('nocache');
session_start();

header( "Content-Type: text/html; charset=utf-8" );

// **********************************************
// クラス定義の読み込み
// **********************************************
require_once("HttpRequest.php");

// **********************************************
// 【クラスの参照】
// HttpRequest の別名を Http として使用
// **********************************************
use \theCodingCompany\HttpRequest as Http;

$file_name = "./img.jpg";

$data = file_get_contents($file_name);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_buffer($finfo, $data);
finfo_close($finfo);

$body = <<<DATA
-----------------------------7da1c519203ca
Content-Disposition: form-data; name="target"; filename="img.jpg"
Content-Type: {$mime}

{$data}
-----------------------------7da1c519203ca
Content-Disposition: form-data; name="send"

送信
-----------------------------7da1c519203ca--
DATA;

// バイト数
$size = strlen($body);

$header = array(
	"Content-Type" => "multipart/form-data; boundary=---------------------------7da1c519203ca",
	"Content-Length" => $size
);

// **********************************************
// アップロード
// **********************************************
$result = Http::http_request(
	"POST",
	"https://ドメイン/demo/file_upload.php", 
	$header, 
	$body
);

print_r( $result );

?>

※ データ区切りの boundary は、以前にダンプした実データのものを使用しています。
※ name="target" でアップロードしています。なので、受けの PHP では固定で処理しました。

file_upload.php
<?php
session_cache_limiter('nocache');
session_start();

header( "Content-Type: application/json; charset=utf-8" );


if ( $_SERVER['REQUEST_METHOD'] == "POST" ) {
 
	$upload = realpath ( './image' );
	$upload .= ( DIRECTORY_SEPARATOR . $_FILES['target']['name'] );
	if ( move_uploaded_file(
		$_FILES['target']['tmp_name'], $upload ) ) {
		$_POST['result']  = "アップロードに成功しました";
	}
	else {
		$_POST['result']  = "アップロードに失敗しました";
	}

}
else {
	$_POST['result']  = "POST メソッドを使用して下さい";
}

$_POST['files'] = $_FILES;

print json_encode($_POST, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE );
?>


関連する記事

MastodonOAuthPHP の HttpRequest.php の解説

WindowBuilder(Swing) で、WEBカメラを使用して画像を保存して okhttp で WEBサーバへアップロードする



タグ:通信 PHP
【PHP + 通信の最新記事】
posted by lightbox at 2017-05-29 23:52 | Comment(0) | PHP + 通信 | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり