2017-05-24 15 views
-1

私は、ログインした管理者が新しい製品を追加する必要がある電子商取引サイトを開発しています。製品フォームには製品の説明とアップロードする製品イメージがあります。私が望むのは、すべてのフォームデータを角度コントローラーで捕捉し、それらを処理するサービスに渡すことです。これまでのところ、私は失敗しました。ここでAngular jsファイルをPHPサーバにアップロード

は、HTMLマークアップです:

<label for="product_name">Product name</label> 
<input id="product_name" type="text" ng-model="addprovm.product.name"> 
<input id="product_img" type="file" ng-model="file" name="file"> 

形は角の関数でラッパーです。 NG-提出=「addprovm.CreateProduct()」私は、次のしている私のコントローラで

-

ここ ​​

(必要な場合)、私はそれらを送信する前に私は、フォームデータをCONSOLE.LOGし、検証したかったですこのデータを受け取り、処理するPHPスクリプトに渡します。私のPHPスクリプトで画像ファイルを場所にアップロードし、製品情報をmysql dbに挿入します。誰でも助けてくれますか?ありがとうございました。乾杯。

答えて

0

この単純なアップロードファイルは、ファイルのステータスを持つオブジェクトを返すことができます。 INSERTクエリの前にこのファイルを呼び出す関数を追加できます。

<?php include_once("../conection.php");?> 
<?php 
    if(isset($_FILES['file'])){ 
     $errors = array();   
     $file_name = $_FILES['file']['name']; 
     $file_size = $_FILES['file']['size']; 
     $file_tmp = $_FILES['file']['tmp_name']; 
     $file_type = $_FILES['file']['type']; 
     $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION)); 
     $extensions = array("jpg","jpeg","png"); 

     if(in_array($file_ext, $extensions) === false){ 
      $errors[]="Is not a valid File."; 
     } 

     $path = dirname(__FILE__) . '/products/'; 

     if(file_exists($path.'/'.$file_name)) { 
      $errors[] = "This file has already been uploaded."; 
     } 

     if (!file_exists($path)) { 
      mkdir($path, 0777, true); 
     } 

     if(empty($errors) == true){ 
      move_uploaded_file($file_tmp, $path.'/'.$file_name); 
      echo (json_encode(['file' => $file_name])); 
     }else{ 
      echo(json_encode(['errores' => $errors])); 
     } 
    } 
?> 
+0

おかげでチームメイト使いやすいですが、私はあなたがここで何を言っているか理解しています。しかし、私のアプリは1ページのアプリケーションです。 fromプロセスは、フォームデータ(製品名、価格など)を収集し、PHPスクリプトに投稿しているサービスに送信する角度コントローラ内で行われています。そのPHPページで私はあなたのコードを使用することができます。しかし、私の問題は、フォームデータをサービスに送信するときにファイルを取得できないことです。助けを借りてくれてありがとう。 – jahid

0

あなたがng-file-uploadを試すことができます;) と

$scope.upload = function (file) { 
     Upload.upload({ 
      url: 'upload/url', 
      data: {file: file, 'username': $scope.username} 
     }).then(function (resp) { 
      console.log('Success ' + resp.config.data.file.name + 'uploaded. Response: ' + resp.data); 
     }, function (resp) { 
      console.log('Error status: ' + resp.status); 
     }, function (evt) { 
      var progressPercentage = parseInt(100.0 * evt.loaded/evt.total); 
      console.log('progress: ' + progressPercentage + '% ' + evt.config.data.file.name); 
     }); 
    }; 
+0

しかし、私はこのソリューションを使用して動作させることができました。 https://github.com/viniciusmelquiades/ng-file-input – jahid

関連する問題