Prestashop 页面上的自定义上传文件
Custom upload file on Prestashop page
我做了一个单独的页面(following this guide),这样他就可以上传pdf文件(他们产品的证书)。并根据 selected 产品向客户搜索的另一个页面。
文件上传页面,逻辑如下:
在表格中:
Select 产品(来自 select 或),然后 select 要上传的证书 (pdf)。
提交按钮存储在 table(由我创建)产品 ID 和证书名称和属性(很快就能进行搜索。)
数据库中数据保存正确,但ftp文件夹中文件未保存。
在这里我给你展示我的代码在/themes/ theme /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) 上运行良好
不要使用静态路径,而是在 prestashop-root/upload/certificados
中创建文件夹
$CarpetaAlojamiento = _PS_UPLOAD_DIR_.'certificados';
我做了一个单独的页面(following this guide),这样他就可以上传pdf文件(他们产品的证书)。并根据 selected 产品向客户搜索的另一个页面。
文件上传页面,逻辑如下:
在表格中: Select 产品(来自 select 或),然后 select 要上传的证书 (pdf)。
提交按钮存储在 table(由我创建)产品 ID 和证书名称和属性(很快就能进行搜索。)
数据库中数据保存正确,但ftp文件夹中文件未保存。
在这里我给你展示我的代码在/themes/ theme /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) 上运行良好
不要使用静态路径,而是在 prestashop-root/upload/certificados
中创建文件夹$CarpetaAlojamiento = _PS_UPLOAD_DIR_.'certificados';