質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Phalcon

Phalconは、C言語で作られたPHPフレームワークです。 C言語で書かれているため、PHP Moduleとして動作するので、 他のフレームワークに比べて高速というのが特徴です。

Q&A

0回答

347閲覧

Phalcon Restapiでの画像アップロードができない。

Haru_510

総合スコア14

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Phalcon

Phalconは、C言語で作られたPHPフレームワークです。 C言語で書かれているため、PHP Moduleとして動作するので、 他のフレームワークに比べて高速というのが特徴です。

0グッド

1クリップ

投稿2019/02/15 10:52

##現在の状況
Phalconのチュートリアルを見ながらRestなapiを作成しようと頑張っています。
そして、チュートリアルに似たようなものを作ろうとしていて画像をcurlでアップロードしたいと思っているのですが、現在のこのコードでは画像が認識されておらずEmptyになっています。(imgカラムはlongblobで登録しています。)

indexphp

1 2$app->post( 3 '/api/items', 4 function() use ($app) { 5 $item = $app->request->getJsonRawBody(); 6 $phql = 'INSERT INTO Store\Products\Items (name, detail, price, img) VALUES (:name:, :detail:, :price:, :img:)'; 7 8 9 $status = $app->modelsManager->executeQuery( 10 $phql, 11 [ 12 'name' => $item->name, 13 'detail' => $item->detail, 14 'price' => $item->price, 15 'img' => $item->img, 16 ] 17 ); 18 19 // create http response 20 $response = new Response(); 21 22 23 // create item confirmation 24 if($status->success() === true) { 25 $response->setStatusCode(201, 'Created'); 26 $item->id = $status->getModel()->id; 27 28 $response->setJsonContent( 29 [ 30 'status' => 'OK', 31 'data' => $item, 32 ] 33 ); 34 } else { 35 // http status change 36 37 $response->setStatusCode(409, 'Conflict'); 38 39 $errors = []; 40 41 foreach($status->getMessages() as $message) { 42 $errors[] = $message->getMessage(); 43 } 44 45 $response->setJsonContent( 46 [ 47 'status' => 'ERROR', 48 'messages' => $errors, 49 ] 50 ); 51 } 52 return $response; 53 } 54); 55

models

1<?php 2 3namespace Store\Products; 4 5use Phalcon\Mvc\Model; 6use Phalcon\Mvc\Model\Message; 7use Phalcon\Validation; 8use Phalcon\Validation\Validator\Uniqueness; 9use Phalcon\Validation\Validator\InclusionIn; 10use Phalcon\Validation\Validator\File as FileValidator; 11 12class Items extends Model 13{ 14 public function validation() 15 { 16 $validator = new Validation(); 17 18 $file = new FileValidator( 19 [ 20 "maxSize" => "10M", 21 "messageSize" => "max size is 10m", 22 "allowedTypes" => [ 23 "image/jpeg", 24 "image/jpg", 25 "image/png", 26 ], 27 "messageEmpty" => "your image is empty", 28 "messageType" => "ファイルは :types のみです", 29 "maxResolution" => "800x600", 30 ] 31 ); 32 $validator->add('img', $file); 33 34 $validator->add( 35 'name', 36 new Uniqueness( 37 [ 38 'field' => 'name', 39 'message' => 'the name must be unique', 40 ] 41 ) 42 ); 43 return $this->validate($validator); 44 } 45}

##質問内容
curfileやpdoでのアップロードなどを試みたいのですが、サイトではformから送るやり方で書かれているものが多く、どのようにしてこのmodelに組み込んだら良いかわからず困っています!
一応validateが機能していないのではないかなと思ったのですが、nameのvalidationが機能していたのでやはりバイナリデータとして認識されていないように思えます。

imgをなんとかしてDBに保存したいです!!(サーバでなくてもいいです)
どなたかヒントだけでも良いので参考になるサイトなどあれば教えていただけると幸いです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問