2016-09-19 44 views
1

long blobphpに保存していますが、最初にフォルダに保存してからdbに保存すると、サーバに書き込み権限があるので問題ありません直接yii phpのフォルダに保存せずにファイルを保存する

を、それを保存することはこれは(これは完璧に動作します)私が試したものです:

if(isset($_POST['image'])){ 

     $id = 0; 

     $image = $_POST['image']; 
     $tmp_image = date('YmdHisu').'.jpg'; 

     file_put_contents($tmp_image, base64_decode($image)); 

     $sql = "INSERT INTO fingerprint(template) 
      VALUES ('".addslashes(file_get_contents($tmp_image))."')"; 

       try 
        { 
           $connection=Yii::app()->db; 
           $command=$connection->createCommand($sql); 

           $rowCount=$command->execute(); // execute the non-query SQL 


        echo "saved successifully"; 
        unlink($tmp_image); 

        } 
        catch(Exception $ex) 
        { 
         echo 'Query failed' , $ex->getMessage(); 
         unlink($tmp_image); 
        } 


      } 

どのように私は、最初の保存、フォルダに保存することなく、mysqlblob fieldでこれを保存することができます〜db

+0

'$ _POST ['image']'に本当にファイルの内容が含まれているとしたら、 'addslashes($ _ POST ['image'])' – Shadow

+0

$ _POST ['image']にベース64のフォーマットでエンコードされたファイルの文字列です。上記は完全に動作します –

+0

あなたはyiiのどのバージョンを使用していますか? – giovaZ

答えて

0

Yii1を実行しているサーバーに対して、POSTメソッドを使用してAndroid経由でファイルを送信したとします。

まず最初に、物理ファイルは$ _FILES変数と$ _POST変数に含まれています。これは基本64形式でエンコードされたファイルの文字列を含んでいます。 $_FILE DOCUMENTATION

は今、これはあなたがYiiのコードを使用して、標準のMVCのYiiの方法でファイルをアップロードしようとすることができる方法です。

それはあなたが、外部デバイスからファイルをアップロードしていることは事実だが、Yiiはあなたの助けに来ましたCUploadedFileクラス:

getInstanceを呼び出して、アップロードされたファイルのインスタンスを取得し、saveAsを使用してサーバーに保存します。名前、一時名、タイプ、サイズ、エラーなど、ファイルに関するその他の情報を照会することもできます。

特に、指定された配列名で始まるインスタンスの配列を返す関数getInstancesByNameを使用する必要があります。

$temp = CUploadedFile::getInstanceByName("image"); // $_FILES['image'] 

し、ファイルデータにアクセスすることができ、これに:最後のための

$temp->name; // Name of the file 
$temp->type; // Type of the file 
$temp->size; // Size of the file 
// etc etc.. 
$temp->saveAs("/your/path/" . $tmp_image . $temp->type); // Save your file 

ファイルが保存されたかどうかを確認し、クエリを実行することができます。

if($temp->saveAs("/your/path/" . $tmp_image . $temp->type)) { 
// File is saved you can execute the query for save the record in your db 
} else { 
// Something went wrong. 
} 

あなたはできるもこのロジックをモデルに転送します。 check this link for more infos

希望すると、これが役に立ちます。

関連する問題