【发布时间】:2012-05-28 09:28:46
【问题描述】:
我需要使用 jquery 和 php 上传一些文件(图像但没关系)。 我找到了一个 jquery 插件插件来制作多个上传文件,http://www.fyneworks.com/jquery/multiple-file-upload/。所以我有这两个输入:
<script type="text/javascript" language="javascript">
$(function(){
$('#immagini').MultiFile({
list: '#lista-immagini'
});
});
</script>
<input type="file" name="immagini[]" id="immagini" accept="gif|jpg|tiff" maxlength="10" />
<script type="text/javascript" language="javascript">
$(function(){
$('#plan').MultiFile({
list: '#lista-plan'
});
});
</script>
<input type="file" name="plan[]" id="plan" accept="gif|jpg|tiff" maxlength="10" />
从表单调用的php文件是:
$files = array();
$fdata = $_FILES['immagini'];
if(isset($_FILES['immagini']))
if(is_array($fdata['name']) && !empty($fdata['name'])){
for($i=0;$i<count($fdata['name']);++$i){
$files[]=array(
'name' =>$fdata['name'][$i],
'tmp_name'=>$fdata['tmp_name'][$i],
'type' => $fdata['type'][$i],
'size' => $fdata['size'][$i],
'error' => $fdata['error'][$i],
);
}
foreach($files as $file){
$tmpName = $file['tmp_name'];
$fp = fopen($tmpName, 'r');
$immagine = fread($fp, filesize($tmpName));
$immagine = addslashes($immagine);
$DB->query('INSERT INTO immagini(id_annuncio, immagine) values('.$_GET['id'].', "'.$immagine.'")');
fclose($fp);
}
}
$files = array();
$fdata = $_FILES['plan'];
if(isset($_FILES['plan']))
if(is_array($fdata['name']) && !empty($fdata['name'])){
for($i=0;$i<count($fdata['name']);++$i){
$files[]=array(
'name' =>$fdata['name'][$i],
'tmp_name'=>$fdata['tmp_name'][$i],
'type' => $fdata['type'][$i],
'size' => $fdata['size'][$i],
'error' => $fdata['error'][$i],
);
}
foreach($files as $file){
$tmpName = $file['tmp_name'];
$fp = fopen($tmpName, 'r');
$immagine = fread($fp, filesize($tmpName));
$immagine = addslashes($immagine);
$DB->query('INSERT INTO planimetrie(id_annuncio, planimetria) values('.$_GET['id'].', "'.$immagine.'")');
fclose($fp);
}
}
问题是当我只从一个输入上传文件时,另一个输入无论如何都会上传一个空文件。我该怎么办?
谢谢,马蒂亚
【问题讨论】:
-
你有
++$i而不是$i++这可能会导致问题... -
@Gavin 只有将其用作更大语句的一部分时才会有所不同。如果您执行
$i = 0; $j = $i++;,则$j将为0,但如果您执行$i = 0; $j = ++$i;,则$j将为1。就其本身而言,它们将具有完全相同的效果。 See here 了解更多信息。 -
我不认为空对测试字符串值有好处。
-
也不确定 is_array($fdata['name']),这不是数组的值而不是数组
-
查看文件名,如果数组中为空则不上传。
标签: php jquery upload multifile-uploader