1

こんにちは、サーバーにファイルをアップロードする際に問題があります。これは私のコードです:

                   <?php
                   session_start();
                   $user=$_SESSION['user_level'];
                   Check if a file has been uploaded
                   if(isset($_FILES['fileToUpload'])) {
          // Make sure the file was sent without errors
                   if($_FILES['fileToUpload']['error'] == 0) {
         // Connect to the database
                   $dbLink = new mysqli('$host', '$username', '$pass', '$tbl_name');
                   if(mysqli_connect_errno()) {
                   die("MySQL connection failed: ". mysqli_connect_error());
                   }

             // Gather all required data
           //$id= mysql_insert_id(); 
                  $name = $dbLink->real_escape_string($_FILES['fileToUpload']['name']);
                  $mime = $dbLink->real_escape_string($_FILES['fileToUpload']['type']);
                  $data = $dbLink->real_escape_string
                  (file_get_contents($_FILES['fileToUpload']['tmp_name']));
                  $size = intval($_FILES['fileToUpload']['size']);

            // Create the SQL query
                  $query = "
                  INSERT INTO files (email,name,type,size,content)
                  VALUES ('$user','$name', '$mime', $size, '$data')";

           // Execute the query
                  $result = $dbLink->query($query);}}
          ?>
                  <?php 
                  move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
            "/home/u152912911/public_html/upload" . $_FILES["fileToUpload"]["name"]);
                ?>

                  <?php
                  if ($_FILES["fileToUpload"]["error"] > 0)
                  {
                  echo "Apologies, an error has occurred.";
                  echo "Error Code: " . $_FILES["fileToUpload"]["error"];
                  }
                  else
                  {
                  move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
                  "/home/u152912911/public_html/upload" . $_FILES["fileToUpload"] 
                  ["name"]);
                  }
                  if (($_FILES["fileToUpload"]["type"] == "image/DOC")
                  || ($_FILES["fileToUpload"]["type"] == "image/jpeg")
                  || ($_FILES["fileToUpload"]["type"] == "image/png" )
                  && ($_FILES["fileToUpload"]["size"] < 10000))
                  {
                  move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
          "/home/u152912911/public_html/upload" . $_FILES["fileToUpload"]["name"]);

              ECHO "Files Uploaded Succesfully";
              echo'<script type="text/javascript">

          window.location.href ="resume2.php"
                  </script>';
                   }
                  else
                  {
                  }
                  echo "Your Resume was Successfully Upload";
                  ?>

ユーザーがアップロードしたすべてのファイルを保存する「アップロード」という名前のフォルダーがあります。私の目的は、ファイルをmysqlと「アップロード」フォルダーに保存することです。ファイルの保存はエラー メッセージなしで正常に機能しますが、「アップロード」フォルダ内にアップロードされたファイルが表示されません。ご協力いただきありがとうございます!

4

4 に答える 4

3
"/home/u152912911/public_html/upload" . $_FILES["fileToUpload"]["name"]

/の後に末尾のスラッシュがありませんupload。次のように変更します。

"/home/u152912911/public_html/upload/" . $_FILES["fileToUpload"]["name"]

そのまま、ファイルはプレフィックス付きのファイル名でディレクトリに保存されていuploadますpublic_html

可能であれば、移植性のために相対パスを使用する必要があります。

"upload/" . $_FILES["fileToUpload"]["name"]

...で十分でしょう。

でも

$_FILES["fileToUpload"]["name"]このように直接使用しないでください。ユーザーがファイル名として文字列を送信するとどうなるかを考えてみましょう。ユーザーはファイル../index.phpを上書きできindex.phpます。また、2 人のユーザーが という名前のファイルをアップロードした場合にどうなるかを考えてみましょう。2picture.jpg番目のアップロードは最初のアップロードを上書きします。

代わりに、自分で作成したファイルの名前を使用する必要があります。このようなユーザー入力に頼るのは安全ではありません。

于 2013-01-02T10:32:22.173 に答える
2

スラッシュを忘れた場合:

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
          "/home/u152912911/public_html/upload" . $_FILES["fileToUpload"]["name"]);

する必要があります

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],
          "/home/u152912911/public_html/upload/" . $_FILES["fileToUpload"]["name"]);

また、成功の戻り値を確認してください。それを想定しないでください。

于 2013-01-02T10:33:01.057 に答える
0

ローカル ホストで正常に動作し、オンライン テストで問題が発生する場合は、サーバー ホストにフォルダーのアクセス許可を 777 に変更するよう依頼してください。

于 2013-01-02T10:46:13.630 に答える
0

ファイルを保存しているフォルダに与えられている権限を確認してください。

于 2013-01-02T10:33:43.123 に答える