2015-06-16 32 views
0

我做了一個單獨的頁面(following this guide),因此他可以上傳pdf文件(他們產品的證書)。並根據選定的產品向客戶搜索另一頁。Prestashop頁面上的自定義上傳文件

在文件上載頁面,則邏輯如下:

在一種形式中: 選擇(從選擇器)的產品,然後選擇該證書(PDF)上傳。

提交存儲在一個表(由我創建)的產品ID和證書名稱和屬性按鈕(很快能夠做搜索。)

在數據被正確保存在數據庫中,但在ftp文件夾文件不會被保存。

在這裏,我告訴你我在/主題/主題代碼/certificados.tpl

形式:

<form method="post" action="subirconnect.php" enctype="multipart/form-data"> 
    <select id="producto" name="producto"> 
     <option value="default" selected>Producto</option> 
     ... 
    </select> 

    <select id="attr" name="attr"> 
     <option value="default" selected>Diametro</option> 
     ... 
    </select> 

    <input type="file" name="adjunto[]" multiple="multiple"> 

    <input type="submit" value="Subir" name="enviar_certificados" class="btn btn-primary"> 
</form> 

驗證形式:

$TamanioMaximo=5000000; // 1000000 ~~~ 1mb 
$CarpetaAlojamiento='../../certificados'; // path public_html/certificados 
$NombreArchivoFinal=""; 
$MensajeCertificados=""; 

if(!empty($_POST['enviar_certificados'])) { 

    $name_producto = $_POST['producto']; 
    $name_combinacion = $_POST['attr']; 
    $name_certificados = $_FILES['adjunto']['name']; 

    $cntFiles = count($name_certificados); 

    for ($i=0; $i< $cntFiles; $i++) { //for multiples files 

    if($_FILES['adjunto']['size'][$i]>$TamanioMaximo) { 
     $MensajeCertificados= 'El archivo debe pesar menos de 5mb'; 

    } else { 

     if (!is_dir($CarpetaAlojamiento)) { 
     mkdir($CarpetaAlojamiento); 
     chmod($CarpetaAlojamiento, 0777); 
     } 

     $NombreArchivoFinal=$CarpetaAlojamiento."/".$_FILES['adjunto']['name'][$i]; 

     if(substr($_FILES['adjunto']['type'][$i],12,3) != 'pdf') { 
     $MensajeCertificados= 'Solo se permiten archivos .PDF'; 

     } else if (is_uploaded_file($_FILES['adjunto']['tmp_name'][$i])) { 
     move_uploaded_file($_FILES['adjunto']['tmp_name'][$i], $NombreArchivoFinal);  

     $name_certificados = $_FILES['adjunto']['name'][$i]; 

     /* upload data to db - works fine*/ 
     SubirCertificados($cntFiles, $name_producto, $name_combinacion, $name_certificados); 

     $MensajeCertificados = '¡Certificado Subido!'; 

     } else { 
     $MensajeCertificados= 'Problemas en el envío '.$_FILES['adjunto']['name'][$i]; 
     } 
    } 
    } 
} 

文件夾 'certificados' 已創建並擁有必要的權限(777)

您可能缺少? move_uploaded_file在prestashop中不工作? 此相同的代碼工作正常,在我的本地(WAMP)

回答

1

不要使用靜態路徑而作出的Prestashop根目錄文件夾/上傳/ certificados

$CarpetaAlojamiento = _PS_UPLOAD_DIR_.'certificados'; 
+0

它完美。非常感謝你。現在又出現了另一個缺點,比較小,但我必須解決它。 PDF鏈接看起來像:'546.pdf',但是當點擊使我找不到404頁面時。有什麼需要做的.htaccess? – nicogaldo

+0

我必須清理.htaccess才能公開文件。謝謝 – nicogaldo