2013-09-30 25 views
2

我的OpenCart商店中的客戶請求使用上傳文件選項從產品頁面上載Corel Draw文件(.cdr)。這是默認情況下不支持的文件類型擴展名,我無法將其納入。我到目前爲止已經完成:如何在OpenCart上載Corel Draw文件?

在系統>設置>服務器,我包括CDRCDR允許的文件擴展名。此外,我已經把所有的MIME類型我能找到的允許的文件MIME類型

  • 應用/ CDR
  • 應用/ Coreldraw中
  • 應用程序/ x-CDR
  • 應用程序/ x -coreldraw
  • 應用/ vnd.corel-繪製
  • 圖像/ CDR
  • 圖像/ CDR
  • 圖像/ X-CDR
  • 圖像/ X-Coreldraw中
  • ZZ的應用程序/ ZZ-winassoc-CDR

不幸的是,Opencart的仍然會返回 「無效的擴展類型」 當我嘗試上傳Corel Draw X6 cdr文件。我也試圖合併.torrent文件(使用相同的方法 - 僅用於測試 - 它工作),所以我相信上傳.cdr文件的答案很接近。

+0

它看起來像你可能會缺少一些'mime type'。在上傳文件的MIME類型中添加'echo'找出哪一個你錯過了... – shadyyx

+0

聲音合乎邏輯,shadyyx!不幸的是,我不知道該怎麼做 - 請你提供詳細信息/一步一步?我真的很感激它! –

+1

打開你的'catalog/controller/product/product.php'並滾動到'upload()'函數應該在的那一端。以下是針對允許的擴展名和允許的MIME類型進行的檢查 - 所以在某處這裏您應該放置一個'echo'或一些日誌記錄來找出PHP認爲什麼時候上傳一個'.cdr'文件的MIME類型......當使用'echo' - 響應在AJAX請求中發回,所以不要忘記檢查你的Firebug的控制檯選項卡... – shadyyx

回答

1

如果您想通過管理後端的文件管理器來完成,您可以製作以下vqmod腳本並將其保存在xml文件夾中......這將允許您將cdr文件添加到您的站點以下載或用於連接或通過文件管理器什麼...

<modification> 
<id>CDR File Uploader</id> 
<version>1.2</version> 
<vqmver>2.1.5</vqmver> 
<author>Jeremy Fisk</author> 
<file name="admin/controller/common/filemanager.php"> 
    <operation> 
     <search position="before"><![CDATA[if (isset($this->request->get['image'])) {]]></search> 
     <add><![CDATA[$ext = strrchr($this->request->get['image'], '.'); 
      if(strtolower($ext) == '.cdr') { 
       $this->request->get['image'] = 'cdr_icon.png'; 
      }]]></add> 
    </operation> 
    <operation> 
     <search position="after"><![CDATA['.jpg',]]></search> 
     <add><![CDATA['.cdr',]]></add> 
    </operation> 
    <operation error="skip"><!-- 1.5.0.x - 1.5.1.2 only --> 
     <search position="replace"><![CDATA[$this->model_tool_image->resize(substr($file, strlen(DIR_IMAGE)), 100, 100)]]></search> 
     <add><![CDATA[(strtolower($ext) == '.cdr') ? $this->model_tool_image->resize('pdf_icon.png', 100, 100) : $this->model_tool_image->resize(substr($file, strlen(DIR_IMAGE)), 100, 100)]]></add> 
    </operation> 
    <operation error="skip"><!-- 1.5.1.3 only --> 
     <search position="replace"><![CDATA[$this->model_tool_image->resize(utf8_substr($file, strlen(DIR_IMAGE)), 100, 100)]]></search> 
     <add><![CDATA[(strtolower($ext) == '.cdr') ? $this->model_tool_image->resize('pdf_icon.png', 100, 100) : $this->model_tool_image->resize(utf8_substr($file, strlen(DIR_IMAGE)), 100, 100)]]></add> 
    </operation> 
    <operation> 
     <search position="replace"><![CDATA[300000]]></search> 
     <add><![CDATA[3000000]]></add> 
    </operation> 
    <operation> 
     <search position="after"><![CDATA['image/jpeg',]]></search> 
     <add><![CDATA[    'application/octet-stream',]]></add> 
    </operation> 
</file> 
<file name="admin/language/english/common/filemanager.php"> 
    <operation> 
     <search position="replace"><![CDATA[300kb]]></search> 
     <add><![CDATA[3MB]]></add> 
    </operation> 
</file> 

這也將提高你的上傳限制在文件管理器ñOpencart的到3MB(以前是300KB)

您需要在默認的i中保存一個cdr圖標的png文件法師的位置(稱爲 「cdr_icon.png」)

我希望這個小腳本可以幫助

乾杯 傑里米

+0

這幫助你嗎? –

+0

謝謝你花時間寫出一個完整的劇本,傑里米!雖然我沒有機會測試你的解決方案,但所有這些都看起來不錯 - 我能夠通過將「application/octet-stream」添加爲MIME類型來解決問題。 –

+0

不用擔心...對不起,我忍不住 –

0

我嘗試了所有的上面,但它不工作。最新的OpenCart 1.5.6.x版本不允許通過圖像管理器上傳圖像文件以外的任何內容。 「All file Types" extension(它的付費擴展名)工作。但是你需要設置正確的MIME類型的珊瑚文件application/cdr

相關問題