1

これは私のコードですが、docファイルをアップロードしようとすると、「無効なファイル」という応答が返されます。どうもありがとうございました。ちなみに、私の2番目の質問は、アップロードされたファイルの名前を希望の形式「実際の時間+元のタイトル」$dateに変更することです。

<?php
$datum = Date("j/m/Y/H/i/s", Time());
echo($date);

$allowedExts = array("doc");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "application/msword"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{    
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("uploaded_papers/" . $_FILES["file"]["name"]))
  {
  echo $_FILES["file"]["name"] . " already exists. ";
  }
else
  {
  move_uploaded_file($_FILES["file"]["tmp_name"],
  "uploaded_papers/" . $_FILES["file"]["name"]);
  echo "Stored in: " . "uploaded_papers/" . $_FILES["file"]["name"];
  }
  }
  }                                          
  else
  {
  echo "Invalid file";
  }
  ?> 
4

3 に答える 3

0

これを変える:

$extension = end(explode(".", $_FILES["file"]["name"]));

に:

$extension = array_pop(explode(".", $_FILES["file"]["name"]));

Array_popは、配列の最後の要素を提供します。

Wordドキュメントの適切なMIMEタイプについて:http://filext.com/faq/office_mime_types.php

.doc
application/msword
.docx
application/vnd.openxmlformats-officedocument.wordprocessingml.document

だから私はこのようなものに行きます:

$allowedMimes = array( "application/msword" , "application/vnd.openxmlformats-officedocument.wordprocessingml.document" , "application/vnd.ms-word");

if ($_FILES["file"]["size"] < 2000000
&& in_array($_FILES["file"]["type"], $allowedMimes))

アップロードされたファイルのMIMEタイプを確認するにはecho $_FILES["file"]["type"];、それが画像ではないことを確認してください。「通常の」ドキュメントが何であるかを確認できるように、mimetypeをポストバックしてください。独自の結果でallowedMimes配列を更新しました。

于 2013-03-25T09:11:16.447 に答える
0

これを試して、これがあなたのために働くかどうかを確認してください

            <?php

        $datum = Date("j/m/Y/H/i/s", Time());
        echo($date);
        $allowedExts = array("doc","docx");
        $extension = array_pop(explode(".", $_FILES["file"]["name"]));

        if ((($_FILES["file"]["type"] == "application/msword"))
        && ($_FILES["file"]["size"] < 2000000)
        && in_array($extension, $allowedExts))
        {
        if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
        }
        else
        {    
            echo "hello";
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
        if (file_exists("uploaded_papers/" . $_FILES["file"]["name"]))
          {
          echo $_FILES["file"]["name"] . " already exists. ";
          }
        else
          {
            //changed file name 
            $file_name = time()."_".$_FILES['file']['name'];
          move_uploaded_file($_FILES["file"]["tmp_name"],
          "uploads/" .$file_name);
          echo "Stored in: " . "uploaded_papers/" .$file_name;
          }
          }
          }                                          
          else
          {
          echo "Invalid file";
          }
          ?> 

変更点

  1. endの代わりにarray_popを使用しました。
  2. currenttimestamp_orignalname.docにアップロードするファイル名を変更しました
于 2013-03-25T09:40:06.787 に答える
-1

どうしてこんなことをしてみませんか

$extension = explode(".", $_FILES["file"]["name"]);

if($extension[1]=='doc' || $extension[1]=='docx'){
  ///begin uploads
}else{
   ///fail message
}
于 2013-03-25T09:39:35.363 に答える