2016-08-08 1 views
0

여러 이미지를 magento로 추가해야하는 제품 id가 제공됩니다.Magento에서 하나의 제품에 여러 이미지를 프로그램 적으로 추가하십시오.

$count = 0; 
$imgArray = array($fpath.'configurable.png'); 
foreach ($imgArray as $image){ 
    $imgUrl = _save_image($image,$objectManager);  
    if ($count == 0){ 
     $configProduct->addImageToMediaGallery($imgUrl , $mediaAttribute, true, false); 
    }else { 
     $configProduct->addImageToMediaGallery($imgUrl , null, true, false); 
    } 
    $count++; 
} 

답변

1
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
$product = $objectManager->create('Magento\Catalog\Model\Product')->load($productId); // Load product object 
$mediaAttribute = array ('thumbnail','small_image','image'); 

$mediaDir = $objectManager->get('Magento\Framework\App\Filesystem\DirectoryList')->getPath('media');// Im Magento 2 
$mediaDir = Mage::getBaseDir('media');// In Magento 1 





//Case 1: When image files are alredy in your server 
$fpath = 'product/images/';// path to your file 
$count = 0; 
$imgArray = array('image1.png','image2.png','image3.png','image4.png'); 
foreach ($imgArray as $image){ 
    $imgUrl = _save_image($fpath.$image,$objectManager,$mediaDir);// copies the file from your local storage to your-magento-root-path/pub/media 
    if ($count == 0){ 
     $product->addImageToMediaGallery($imgUrl , $mediaAttribute, true, false); 
    }else { 
     $product->addImageToMediaGallery($imgUrl , null, true, false); 
    } 
    $count++; 
} 

function _save_image($img,$objectManager,$mediaDir) { 
    $imageFilename  = basename($img);  
    $image_type   = substr(strrchr($imageFilename,"."),1); //find the image extension 
    $filename   = md5($img . strtotime('now')).'.'.$image_type; //give a new name, you can modify as per your requirement 


    if (!file_exists($mediaDir)) mkdir($mediaDir, 0777, true); 
    else chmod($mediaDir, 0777); 

    $filepath   = $mediaDir . '/'. $filename; //path for temp storage folder: pub/media 
    file_put_contents($filepath, file_get_contents(trim($img))); //store the image from external url to the temp storage folder 
    return $filepath; 
} 






//Case 2: When you have to browse images from a form. (Then save into your server and then) 
if(!empty($imageFile)){ 
    $count = 0; 
    if (!file_exists($mediaDir)) mkdir($mediaDir, 0777, true); 
    else chmod($mediaDir, 0777); 

    foreach($imageFile['name'] as $k2=>$v2){  
     if($imageFile['error'][$k2] == 0 && file_exists($imageFile['tmp_name'][$k2])){ 
      $ext[$k2] = pathinfo($imageFile['name'][$k2], PATHINFO_EXTENSION); 
      $filename[$k2] = md5(strtotime('now')).'.'.$ext[$k2]; 
      $filepath[$k2] = $mediaDir .'/'. $filename[$k2]; 

      $bin_string[$k2] = file_get_contents($imageFile['tmp_name'][$k2]); 
      file_put_contents($filepath[$k2], $bin_string[$k2]); 

      if ($count == 0) : 
       $product[$k]->addImageToMediaGallery($filepath[$k2] , $mediaAttribute, true, false); 
      else : 
       $product[$k]->addImageToMediaGallery($filepath[$k2] , null, true, false); 
      endif; 
      $count++; 
     } 
    } 
} 
관련 문제