ecent days, I work on a project to rebuild a magento website to optimize its performance and improving customer experience. Our team decided to migrate data to a fresh magento community 1.9.3.0 (latest magento 1.9 version).
It is a common practice to use Magento Data Flow Profiles for importing data.
System -> Import / Export -> Data Flow Profiles -> Import All Products
When running the profile for importing product data, I met a series of errors
Image does not exist.
They look like this:
The CSV file was exported from old magento system, it has this template:
sku,image
"Product-001","/p/o/filename.jpg"
Mage_Catalog_Model_Convert_Adapter_Product will call saveImageDataRow for saving product image:
/**
* Save data row with gallery image info only
*
* @param Mage_Catalog_Model_Product $product
* @param array $importData
*
* @return Mage_Catalog_Model_Convert_Adapter_Product
*/
public function saveImageDataRow($product, $importData)
{
$imageData = array(
'label' => $importData['_media_lable'],
'position' => $importData['_media_position'],
'disabled' => $importData['_media_is_disabled']
);
$imageFile = trim($importData['_media_image']);
$imageFile = ltrim($imageFile, DS);
$imageFilePath = Mage::getBaseDir('media') . DS . 'import' . DS . $imageFile;
$updatedFileName = $this->_galleryBackendModel->addImage($product, $imageFilePath, null, false,
(bool) $importData['_media_is_disabled']);
$this->_galleryBackendModel->updateImage($product, $updatedFileName, $imageData);
$this->_addAffectedEntityIds($product->getId());
$product->setIsMassupdate(true)
->setExcludeUrlRewrite(true)
->save();
return $this;
}
The absolute file path to check for existed image is defined by this line:
$imageFilePath = Mage::getBaseDir('media') . DS . 'import' . DS . $imageFile;
It means, the function will check for media/import/p/o/filename.jpg for the existed file so I copied all the data from media/catalog/product folder, if you have ssh access to the server, you can have it done with some simple commands.
cd docroot/media
mkdir import
rsync -av catalog/product/ import/
After that, I could import thousand of products successfully.
If you have only FTP access, you may upload it to media/import then it will work.
I hope this small tip can help you to save time of debugging the issue.