我正在尝试下面的代码以编程方式创建产品,一切都很好,但是如果客人创建产品,那么自定义图像不会上传
有人能告诉我正确的方法吗?
protected function _thisProduct($type, $doSave=true, $originalProduct, $newImagePath="")
{
// code for Guest
$session = Mage::getSingleton('customer/session');
if ($session->isLoggedIn()) {
return;
}
$result = array(
'success' => false
);
if ($this->getRequest()->isPost()) {
$login = $this->getRequest()->getPost('login');
$productId=$this->getRequest()->getPost('product_id');
// echo $login['product_id'];die;
if (!empty($login['username']) && !empty($login['password'])) {
try {
$session->login($login['username'], $login['password']);
$result['redirect'] = $this->_getRefererUrl() ? $this->_getRefererUrl() : Mage::getUrl('customer/account', array('_secure' => true));
$result['success'] = true;
$customerId = Mage::getSingleton('customer/session')->getCustomerId();
// code for guest end
$product = Mage::getModel('catalog/product');
// product images
$images = array(
'thumbnail' => 'image.png', // displaying under cart page
//'small_image' => 'image.png',
'image' => 'image.png', // displaying under my design
);
foreach ($images as $imageType => $imageFileName) {
if($newImagePath != ""){
$dir = Mage::getBaseDir('media') . DS . 'one_two_three/quote/';
$path = $dir . $newImagePath;
}else{
$dir = Mage::getBaseDir('media') . DS . 'example/super/';
$path = $dir . $imageFileName;
}
//echo $path."<br>";
if (file_exists($path)) {
try {
$product->addImageToMediaGallery($path, $imageType, false);
} catch (Exception $e) {
echo $e->getMessage();
}
} else {
echo "No image path found dear: `{$path}`<br/>";
}
}
$customerId = Mage::getSingleton('customer/session')->getCustomerId();
$product->setCreatedByCustomerId($customerId);
if ($doSave)
$product->save();
return $product;
// code for guest
} catch (Mage_Core_Exception $e) {
switch ($e->getCode()) {
case Mage_Customer_Model_Customer::EXCEPTION_EMAIL_NOT_CONFIRMED:
$message = Mage::helper('customer')->__('This account is not confirmed.username');
break;
case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD:
$message = $e->getMessage();
break;
default:
$message = $e->getMessage();
}
$result['error'] = $message;
$session->setUsername($login['username']);
} catch (Exception $e) {
Mage::helper("ajaxlogin")->log("There has been an error during the login.");
// Mage::logException($e); // PA DSS violation: this exception log can disclose customer password
}
} else {
$result['error'] = Mage::helper('customer')->__('Login and password are required.');
}
}
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
// code for guest end
}
以下代码适用于注册用户:
protected function _thisProduct($type, $doSave=true, $originalProduct, $newImagePath="")
{
$product = Mage::getModel('catalog/product');
// product images
$images = array(
'thumbnail' => 'image.png', // displaying under cart page
//'small_image' => 'image.png',
'image' => 'image.png', // displaying under my design
);
foreach ($images as $imageType => $imageFileName) {
if($newImagePath != ""){
$dir = Mage::getBaseDir('media') . DS . 'one_two_three/quote/';
$path = $dir . $newImagePath;
}else{
$dir = Mage::getBaseDir('media') . DS . 'example/super/';
$path = $dir . $imageFileName;
}
//echo $path."<br>";
if (file_exists($path)) {
try {
$product->addImageToMediaGallery($path, $imageType, false);
} catch (Exception $e) {
echo $e->getMessage();
}
} else {
echo "No image path found dear: `{$path}`<br/>";
}
}
$customerId = Mage::getSingleton('customer/session')->getCustomerId();
$product->setCreatedByCustomerId($customerId);
if ($doSave)
$product->save();
return $product;
}
答案 0 :(得分:0)
使用soap api上传图片
$base_url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
$client = new SoapClient($base_url.'index.php/api/soap/?wsdl',array('trace' => 1,'connection_timeout' => 120));
$session = $client->login('admin','admin123');
function uploadImage($productId,$session,$client,$image)
{
// need to check on child image
$file_image = explode(".",basename(trim($image)));
$fileName = $file_image[0];
$file = array(
'content' => base64_encode(file_get_contents($image)),
'mime' => 'image/jpeg',
'name' => $fileName
);
$result = $client->call(
$session,
'catalog_product_attribute_media.create',
array(
$productId,
array('file'=>$file, 'label'=>'label', 'position'=>'100', 'types'=>array('small_image','image','thumbnail'), 'exclude'=>0)
)
);
}