下面的源码,是对反馈信息中的上传文件进行判断,如果文件类型不符合系统要求,则返回错误信息,但有一个问题是,这个代码好像没有判断没有上传文件的情况,(上传文件是非必填字段)
我希望实现当没有选择上传文件时,上传文件可以留空,请问这里应该怎么修改一下?$r[filetype]=GetFiletype($file_name);
$r[insertfile]=ReturnDoTranFilename($file_name,0);
$r[filename]=$r[insertfile].$r[filetype];
$r[filepath]="file";
$filepath=$r[filepath]?$r[filepath].'/':$r[filepath];
$fspath['filepath']="/file/";
$fspath['fileurl']="/file/";
$r[savepath]=ECMS_PATH.$fspath['filepath'].$filepath;
$r[url]=$fspath['fileurl'].$filepath.$r[filename];
$r[name]=$r[savepath]."small".$r[insertfile];
$r[yname]=$r[savepath].$r[filename];
$r[tran]=1;
$rstz=$empire->fetch1("select * from {$dbtbpre}enewspublic limit 1");
$qaddimgtype=substr($rstz[qaddtranimgtype],1,strlen($rstz[qaddtranimgtype]));
$qaddimgtype=substr($qaddimgtype,0,strlen($qaddimgtype)-1);
$qaddfiletype=substr($rstz[qaddtranfiletype],1,strlen($rstz[qaddtranfiletype]));
$qaddfiletype=substr($qaddfiletype,0,strlen($qaddfiletype)-1);
$hzm=$qaddimgtype."|".$qaddfiletype;
$hzm=explode("|",$hzm);
if(!in_array($r[filetype],$hzm)){
printerror("NotQTranFiletype","history.go(-1)",1);
}
if(CheckSaveTranFiletype($r[filetype]))
{
if($doetran)
{
$r[tran]=0;
return $r;
}
else
{
printerror("NotQTranFiletype","history.go(-1)",1);
}
}
$cp=@move_uploaded_file($file,$r[yname]);
if(empty($cp))
{
if($doetran)
{
$r[tran]=0;
return $r;
}
else
{
printerror("NotQTranFiletype","history.go(-1)",1);
}
}
DoChmodFile($r[yname]);
$r[filesize]=(int)$file_size;
return $r;
}

解决方案 »

  1.   


    代码改为:
    r[filetype]=GetFiletype($file_name);if(isset(r[filetype]))
    {
       exit('没发现有上传文件!');
    }
    $r[insertfile]=ReturnDoTranFilename($file_name,0);
    $r[filename]=$r[insertfile].$r[filetype];
    $r[filepath]="file";
    $filepath=$r[filepath]?$r[filepath].'/':$r[filepath];
    $fspath['filepath']="/file/";
    $fspath['fileurl']="/file/";
    $r[savepath]=ECMS_PATH.$fspath['filepath'].$filepath;
    $r[url]=$fspath['fileurl'].$filepath.$r[filename];
    $r[name]=$r[savepath]."small".$r[insertfile];
    $r[yname]=$r[savepath].$r[filename];
    $r[tran]=1;
    $rstz=$empire->fetch1("select * from {$dbtbpre}enewspublic limit 1");
    $qaddimgtype=substr($rstz[qaddtranimgtype],1,strlen($rstz[qaddtranimgtype]));
    $qaddimgtype=substr($qaddimgtype,0,strlen($qaddimgtype)-1);
    $qaddfiletype=substr($rstz[qaddtranfiletype],1,strlen($rstz[qaddtranfiletype]));
    $qaddfiletype=substr($qaddfiletype,0,strlen($qaddfiletype)-1);
    $hzm=$qaddimgtype."|".$qaddfiletype;
    $hzm=explode("|",$hzm);
    if(!in_array($r[filetype],$hzm)){
    printerror("NotQTranFiletype","history.go(-1)",1);
    }
    if(CheckSaveTranFiletype($r[filetype]))
    {
    if($doetran)
    {
    $r[tran]=0;
    return $r;
    }
    else
    {
    printerror("NotQTranFiletype","history.go(-1)",1);
    }
    }
    $cp=@move_uploaded_file($file,$r[yname]);
    if(empty($cp))
    {
    if($doetran)
    {
    $r[tran]=0;
    return $r;
    }
    else
    {
    printerror("NotQTranFiletype","history.go(-1)",1);
    }
    }
    DoChmodFile($r[yname]);
    $r[filesize]=(int)$file_size;
    return $r;
    }
      

  2.   

    汗,CSDN没法嵌套UBB:
    代码改为:
    r[filetype]=GetFiletype($file_name);if(isset(r[filetype]))
    {
       exit('没发现有上传文件!');
    }
    $r[insertfile]=ReturnDoTranFilename($file_name,0);
    $r[filename]=$r[insertfile].$r[filetype];
    $r[filepath]="file";
    $filepath=$r[filepath]?$r[filepath].'/':$r[filepath];
    $fspath['filepath']="/file/";
    $fspath['fileurl']="/file/";
    $r[savepath]=ECMS_PATH.$fspath['filepath'].$filepath;
    $r[url]=$fspath['fileurl'].$filepath.$r[filename];
    $r[name]=$r[savepath]."small".$r[insertfile];
    $r[yname]=$r[savepath].$r[filename];
    $r[tran]=1;
    $rstz=$empire->fetch1("select * from {$dbtbpre}enewspublic limit 1");
    $qaddimgtype=substr($rstz[qaddtranimgtype],1,strlen($rstz[qaddtranimgtype]));
    $qaddimgtype=substr($qaddimgtype,0,strlen($qaddimgtype)-1);
    $qaddfiletype=substr($rstz[qaddtranfiletype],1,strlen($rstz[qaddtranfiletype]));
    $qaddfiletype=substr($qaddfiletype,0,strlen($qaddfiletype)-1);
    $hzm=$qaddimgtype."|".$qaddfiletype;
    $hzm=explode("|",$hzm);
    if(!in_array($r[filetype],$hzm)){
    printerror("NotQTranFiletype","history.go(-1)",1);
    }
    if(CheckSaveTranFiletype($r[filetype]))
    {
    if($doetran)
    {
    $r[tran]=0;
    return $r;
    }
    else
    {
    printerror("NotQTranFiletype","history.go(-1)",1);
    }
    }
    $cp=@move_uploaded_file($file,$r[yname]);
    if(empty($cp))
    {
    if($doetran)
    {
    $r[tran]=0;
    return $r;
    }
    else
    {
    printerror("NotQTranFiletype","history.go(-1)",1);
    }
    }
    DoChmodFile($r[yname]);
    $r[filesize]=(int)$file_size;
    return $r;
    }
      

  3.   

    谢谢skyaspnet,如果没有选择上传文件,反馈信息还是要提交的啊,只是上传留空就行,应该怎么改呢,
    现在这样的话如果没选择上传文件,整个反馈信息都不会提交了,
      

  4.   


    可以使用js来判断:假设文件控件如下:<input type="file" id="upload" />
    使用JS代码判断如下:
    if(document.getElementById('upload').value.length<=0)
    {
        alert('请选择上传文件!');
        return false;
    }