我一直在制作图片上传器,我遇到了一些问题。
代码非常简单:它从表单和几个信息文本中获取文件(zip文件),然后生成一个url(如果之前不存在,然后在那里提取文件)。
首先,如果文件很大并且需要一些时间上传,表单变量($_post["serie"]
和$_POST["capitulo"]
似乎已过期。
第二个是,当上传不是jpg的东西时,它往往会失败><并且不知道为什么。
感谢你提前做出的努力。
<?php
require_once('pclzip.lib.php');
function preextract($p_event, &$p_header) {
$info = pathinfo($p_header['filename']);
if ($info['extension'] == 'gif' || $info['extension'] == 'jpg' || $info['extension'] == 'png' || $info['extension'] == 'jpeg') {
return 1;
} else {
return 0;
}
}
if(is_uploaded_file($_FILES['file']['tmp_name'])) {
echo $_FILES['file']['tmp_name'];
}
$archive = new PclZip($_FILES['file']['tmp_name']);
$extractpath = "../series/" . $_POST["serie"] . "/" . $_POST["capitulo"];
echo $extractpath;
if (file_exists($extractpath)) {
} else {
mkdir($extractpath, 0755);
}
if (($archive->extract(PCLZIP_OPT_PATH, $extractpath, PCLZIP_CB_PRE_EXTRACT, 'preextract') == 0)) {
echo "\n error in extraction";
} else {
echo "\n done";
}
?>
答案 0 :(得分:1)
一些事情......
您需要增加max filesize以提交更大的文件:
ini_set( 'upload_max_filesize', '100M' );
ini_set( 'post_max_size', '100M' );
更改file_exists
支票:
if ( !file_exists( $extractpath ) )
mkdir( $extractpath, 0755 );
更改您的扩展程序检查:
return in_array( $info['extension'], array( 'png', 'jpg', 'jpeg', 'gif' ) ) ? 1 : 0;
我不确定为什么它仅适用于一个扩展程序,可能PclZip
有一个禁止某些文件的设置,所以请查看。