如果文件已存在,如何显示消息

时间:2012-04-14 12:49:25

标签: php javascript jquery

我在一个页面和另一个页面中有一个javascript函数我有一个专注于文件上传的php脚本。目前我的文件上传成功,这是个好消息。我的问题是,我想使用php来检查文件夹中是否已存在文件,但我想使用javascript函数显示已存在的状态文件的消息,如果这是真的。怎么办呢?

下面是检查文件是否存在的php代码:

if (file_exists("upload/" . $_FILES["fileImage"]["name"]))
  {

  }

下面是文件停止上传时的Javascript函数。如果文件没有上传,它会显示一条消息,说明上传文件时出错,如果文件成功上传,它会显示一条消息,但我想要一个额外的消息,如果文件没有上传但是这是因为文件已存在,然后我希望它显示一条消息,说明文件已经存在。

 function stopImageUpload(success){
          var result = '';
          if (success == 1){
             result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>';
          }
          else {
             result = '<span class="emsg">There was an error during file upload!</span><br/><br/>';
          }
}
P.S请没有人提出他们的回答为什么我不在php代码中回显,我不想这样做,因为用户实际上从未实际导航到php脚本。

3 个答案:

答案 0 :(得分:1)

你说。

  P.S请没有人提出他们的回答为什么我不回应   PHP代码,我不想这样做,因为用户永远不会   实际上导航到php脚本。

无论如何你需要执行一些PHP代码。所以你必须以这种或那种方式做到这一点。然后,以您想要的任何方式向用户显示信息。

因为我们没有所有的代码,我假设你在html代码中有一个输入[type = file],所以你需要使用带有输入值的ajax。将它发送到你的服务器,检查文​​件名是否已经存在,然后使用php中的ajax以true或false响应,并执行javascript中的代码,该代码将告诉用户文件是否存在。你可以使用jQuery来做到这一点:

        $("#myInput").on("change",function(event){
             $.getJSON("checkFileService.php",{filename:$(event.currentTarget).val()},
        function(datas){
         if(datas.exists === true){
          doSomething();
         else{
          doSomethingElse();
         }
        }
       }

检查jQuery ajax api以获取更多信息

您必须编写一个php脚本,输出一些json字符串,如{&#34; exists&#34;:true},以便客户端脚本能够正常工作。

答案 1 :(得分:1)

在您的PHP代码中检查文件是否存在

else{
echo 2;
}

在你的其他clausule中的JS代码

if(success == 2){
result = '<span class="emsg">File already exist!</span><br/><br/>';
}

这是一个快速的解决方案,但它为您提供了一种通过JS / PHP进行更复杂文件处理的方法。例如。当PHP返回一个数据1,然后一切正常,当2然后文件存在,当3然后文件太大,当4然后文件有不良扩展,当5返回其他东西,依此类推。

我在学习C / C ++时遇到的这种方法(用C语言就像标准的东西)。这样您可以提供代码的某些部分的信息。

但是,如果名称不相关,我会为文件生成一个随机名称,如果文件名很重要,那么wold使用AJAX检查它,并显示有关它的信息,或者在文件名后附加一个数字( file(1).xyz,file(2).xyz,file(3).xyz)。这取决于你想要达到的目标。

答案 2 :(得分:1)

@safarov你能告诉我一个函数的例子,看看文件是否已经存在,然后为新上传的文件写下不同的名字吗?

保存/上传名为“filenamecounter.txt”的简单文本文件, 只包含文本1。

<?php
    //Get the original name of file
    $tmp_name = $_FILES["filename"]["tmp_name"];

    //Get/Read File Name Counter
    $filenamecounter = file_get_contents('filenamecounter.txt');

    //If it is less than 10, add a "0"/Zero to make it like 01,02,03
    if (strlen($filenamecounter) <= 1){
        $filenamecounter = str_pad($filenamecounter, 2, '0', STR_PAD_LEFT);
        }

    //Assign Filename + Variable
    $name = "filename".$filenamecounter.".txt";

    //Save file with new name
    move_uploaded_file($tmp_name, $name);

    //write quotecounter to file.
    $filenamecounter++;
    file_put_contents("filenamecounter.txt", $filenamecounter);
?>