1

我在一个页面中有一个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/>';
          }
}

PS 请没有人回答为什么我不在 php 代码中添加一个回显,我不想那样做,因为用户实际上从未导航到 php 脚本。

4

3 回答 3

1

你说。

PS 请没有人回答为什么我不在 php 代码中添加一个回显,我不想那样做,因为用户实际上从未导航到 php 脚本。

无论如何,您都需要执行一些 php 代码。所以你将不得不以一种或另一种方式做到这一点。然后,使用您想要的任何方式向用户显示信息。

由于我们没有所有代码,我假设您在 html 代码中有一个 input[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 脚本来输出一些像 {"exists":true} 这样的 json 字符串,以便客户端脚本正常工作。

于 2012-04-14T13:04:02.717 回答
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);
?>
于 2012-04-14T14:50:41.753 回答
1

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

else{
echo 2;
}

在你的 JS 代码中的 else 子句中做

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

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

我在学习C/C++时遇到过这种方法(在C中这种方式就像一个标准的东西)。通过这种方式,您可以提供信息某些部分的代码是如何运行的。

尽管如此,我还是会为文件生成一个随机名称,如果名称无关紧要,并且如果文件名很重要,那么将使用 AJAX 来检查它,并显示有关它的信息,或者可能在文件名后附加一个数字(文件(1 ).xyz、文件(2).xyz、文件(3).xyz)。这取决于您要达到的目标。

于 2012-04-14T13:42:52.907 回答