2012-02-18 11 views
0

私はmyserverインデックスに移動し、そこからインターフェイスを使用して画像をアップロードしても正常に動作します。しかし、私が道に入るとすぐに:画像をアップロードしようとしたときにこのエラーが発生するのはなぜですか?

http://myserver/upload.php?image['name']=F:\Bilder\6.jpg 

私はすべてのフィールドが必要であるというエラーが出ます。しかし、このような画像をアップロードする必要があります。なぜなら、私が作っているアプリでそれを実装しようと考えているからです。それは、私はPHPとよく知っているわけではないということです。ここ

はupload.php

<?php 
session_start(); 

require("includes/conn.php"); 


function is_valid_type($file) 
{ 

$valid_types = array("image/jpg", "image/jpeg", "image/bmp", "image/gif", "image/png"); 

if (in_array($file['type'], $valid_types)) 
    return 1; 
return 0; 
} 

function showContents($array) 
{ 
echo "<pre>"; 
print_r($array); 
echo "</pre>"; 
} 

$TARGET_PATH = "images/"; 

$image = $_FILES['image']; 

$image['name'] = mysql_real_escape_string($image['name']); 

$TARGET_PATH .= $image['name']; 

if ($image['name'] == "") 
{ 
$_SESSION['error'] = "All fields are required"; 
header("Location: index.php"); 
exit; 
} 

if (!is_valid_type($image)) 
{ 
$_SESSION['error'] = "You must upload a jpeg, gif, or bmp"; 
header("Location: index.php"); 
exit; 
} 

if (file_exists($TARGET_PATH)) 
{ 
$_SESSION['error'] = "A file with that name already exists"; 
header("Location: index.php"); 
exit; 
} 

if (move_uploaded_file($image['tmp_name'], $TARGET_PATH)) 
{ 
$sql = "insert into Avatar (filename) values ('" . $image['name'] . "')"; 
$result = mysql_query($sql) or die ("Could not insert data into DB: " .  mysql_error()); 

exit; 
} 
else 
{ 
header("Location: index.php"); 
exit; 
} 

?>

、あなたはを通して$_GET[]変数を送信することにより、画像をアップロードすることはできませんので、単に仕事を文句を言わないのindex.php

   <?php 
       if (isset($_SESSION['error'])) 
       { 
        echo "<span id=\"error\"><p>" . $_SESSION['error'] . "</p></span>"; 
        unset($_SESSION['error']); 
       } 
       ?> 
       <form action="upload.php" method="post" enctype="multipart/form-data"> 
       <p> 

        <label>Avatar</label> 
        <input type="file" name="image" /><br /> 
        <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
        <input type="submit" id="submit" value="Upload" /> 
       </p> 
+1

http://myserver/upload.php?image ['name'] = F:\ Bilder \ 6.jpg'は有効なPHP式ではありません。何がどこで、まさにこの行に入っていますか? – bos

+0

私のブラウザでは、インデックスからインタフェースを使用せずに彼にイメージを与えようとしています – Blade

答えて

1

問題があります。あなたがイメージ変数を使用すると、もう一つは、あなたが$イメージ= $ _FILES [「イメージ」]をやっているということである

$_GET['image'] 

を使うべきであるかを知りたいので、もしあなたはget要求を行っている

$ _FILESは投稿リクエストからのみ利用可能です。 GETリクエストのパラメータでファイルをアップロードすることはできません。

+0

ありがとうございます。しかし、私はアップロードしようとすると、次のエラー「有効なイメージではありません。 – Blade

+0

ファイルをアップロードしていないためシンプルです。ファイルのアップロードは、GETリクエストでは実行できません。質問は、なぜフォームを使用してファイルをアップロードできないのですか? – Mark

+0

よろしくお願いいたします。あなたが私がしなければならないことをより良く理解するために、私に良い文書(あなたが知っていれば)またはそれに類するものを私に紹介することができますか? – Blade

1

ですurl。

あなたが持っているupload.phpページに見られるように、ファイルは$_FILES['image']を介してPHPページで取得されます。

$_GET['image']に変更し、あなたが提案するget変数でリンクを投稿しようとすると、ファイルへのパスが表示される可能性がありますが、実際のアップロードファイルではなく文字列型になりますオブジェクト。

1

あなたがここでやっていることであるGETtingとは対照的に、WebフォームにPOST stuffする必要がある場合は、URLの一部としてPOSTするデータを指定するだけではなりません。

これらのHTTPメソッド(GETとPOST)を見て違いを理解してください。

あなたのアプリでは、URLにPOSTをするだけです。プログラムするツールに応じて、POST経由でデータを送信する方法を調べる必要があります。

また、curl(またはlibcurl)の実装が開発プラットフォームで利用可能かどうかを確認してください。 $イメージが値を持たない

if ($image['name'] == "") 

関連する問題