从 csv 文件产品问题导入 Magento
Importing in Magento from csv file products issues
我们在 Magento 中有进口产品的供应商 sheet。
问题:
在供应商 sheet 中,图像位于不同的文件夹中,但具有相同的图像
喜欢:
folder1/image.jpg
folder2/image.jpg
现在,当我们在 Magento 中导入时,所有图像都在同一个文件夹中。而且每个产品都有相同的图像。
我该如何解决这个问题?
如果图像的名称总是相同的(如您的示例),那么您可以简单地存储您处理的所有图像名称(不包括目录),并检查它是否在那个数组。
否则,您将不得不比较图像,如下所示。此代码假定您有一个名为 $filenames
.
的每个图像的文件名数组
例子
$imageHashes = []; //Define an array where hash of each image will be stored
$uniqueFiles = []; //The array which will contain only image files that are unique.
for ($i=0;$i<count($filenames);$i++) { //Loop through the filenames
$hash = md5_file($filenames[$i]); //Get the hash of the image
if (!in_array($hash,$imageHashes)) { //If the imageHashes array does not contain the hash, then this is a new image
$imageHashes[] = $hash; //Add the hash to the imageHashes array
$uniqueFiles[] = $filenames[$i]; //Add the filename to the list of filenames for unique images.
}
}
散列
这是有效的,因为散列算法应该为放入其中的任何内容生成不同的散列。虽然 md5
长期以来一直不安全地存储密码,但在这种情况下使用它仍然完全没问题。
因此,每次循环运行时,它都会获取当前文件名的文件哈希值,然后检查该哈希值是否已存在于数组中。如果是这样,则什么也不会发生(请记住,同一个文件应该始终具有相同的哈希值,因此图像的相同克隆也应该共享相同的哈希值)因为图像已经找到并处理过。否则,我们将散列添加到 $imageHashes
table(以便我们可以在下一次传递中与它进行比较),并将文件名添加到 $uniqueFiles
数组,以便我们可以使用稍后。
在此过程结束时,我们应该有一个数组,其中仅包含每个图像第一次出现的文件名。
备注
您可以在 PHP Manual;
中找到有关 md5_file
的更多信息
有一个很棒的 Whosebug post here 讨论了使用 PHP.
比较两个图像文件的其他方法
我们在 Magento 中有进口产品的供应商 sheet。
问题:
在供应商 sheet 中,图像位于不同的文件夹中,但具有相同的图像
喜欢:
folder1/image.jpg
folder2/image.jpg
现在,当我们在 Magento 中导入时,所有图像都在同一个文件夹中。而且每个产品都有相同的图像。
我该如何解决这个问题?
如果图像的名称总是相同的(如您的示例),那么您可以简单地存储您处理的所有图像名称(不包括目录),并检查它是否在那个数组。
否则,您将不得不比较图像,如下所示。此代码假定您有一个名为 $filenames
.
例子
$imageHashes = []; //Define an array where hash of each image will be stored
$uniqueFiles = []; //The array which will contain only image files that are unique.
for ($i=0;$i<count($filenames);$i++) { //Loop through the filenames
$hash = md5_file($filenames[$i]); //Get the hash of the image
if (!in_array($hash,$imageHashes)) { //If the imageHashes array does not contain the hash, then this is a new image
$imageHashes[] = $hash; //Add the hash to the imageHashes array
$uniqueFiles[] = $filenames[$i]; //Add the filename to the list of filenames for unique images.
}
}
散列
这是有效的,因为散列算法应该为放入其中的任何内容生成不同的散列。虽然 md5
长期以来一直不安全地存储密码,但在这种情况下使用它仍然完全没问题。
因此,每次循环运行时,它都会获取当前文件名的文件哈希值,然后检查该哈希值是否已存在于数组中。如果是这样,则什么也不会发生(请记住,同一个文件应该始终具有相同的哈希值,因此图像的相同克隆也应该共享相同的哈希值)因为图像已经找到并处理过。否则,我们将散列添加到 $imageHashes
table(以便我们可以在下一次传递中与它进行比较),并将文件名添加到 $uniqueFiles
数组,以便我们可以使用稍后。
在此过程结束时,我们应该有一个数组,其中仅包含每个图像第一次出现的文件名。
备注
您可以在 PHP Manual;
中找到有关 有一个很棒的 Whosebug post here 讨论了使用 PHP.
比较两个图像文件的其他方法
md5_file
的更多信息