2009-08-06 15 views
3
私は、ユーザーが次のPHP

Facebookは - の<input type =「ファイル」>タグ

<?php 
echo render_header('Your'); 

define("MAX_SIZE", "1536"); 

function getExtension($str){ 
    $i = strpos($str,"."); 
    if(!$i) {return "";} 
    $l = strlen($str) - $i; 
    $ext = substr($str, $i+1, $l); 
    return $ext; 
} 

$errors = 0; 

if(isset($_POST['Upload'])){ 
    $image = $_FILES["file1"]["name"]; 
    if($image){ 
    $filename = stripslashes($_FILES["file1"]["name"]); 
    $extension = getExtension($filename); 
    $extension = strtolower($extension); 
    if((strcasecmp($extension,"jpg") != 0) && (strcasecmp($extension,"jpeg") != 0) && (strcasecmp($extension,"png") != 0) && (strcasecmp($extension,"gif") != 0)) 
    { 
     $errors = 1; 
    } 
    else{ 
     $size = filesize($_FILES['file1']['tmp_name']); 
     if($size > MAX_SIZE*1024){ 
     $errors = 2; 
     } 
     else{ 
     $image_name = md5(uniqid()) . '.' . $extension; 
     $newname = "../images/" . $image_name; 
     $flName = "/images/" . $image_name; 
     $copied = move_uploaded_file($_FILES['file1']['tmp_name'], $newname); 
     if(!$copied){ 
      $errors = 3; 
     } 
     } 
    } 
    } 
} 

if(isset($_POST['Upload']) && $errors == 0){ 
    //add to database here 
    ... 
    if($errors == 0){ 
    include "uploadedFile.php"; 
    } 
} 
else{ 

$user_details = $fb->api_client->users_getInfo($user, 'first_name,last_name,pic_square'); 
$image_url = $user_details[0]['pic_square']; 
if($image_url == ""){ 
    $image_url = "http://static.ak.fbcdn.net/pics/q_silhouette.gif"; 
} 
$user_name = $user_details[0]['first_name'] . " " . $user_details[0]['last_name']; 
if(isset($_POST['Upload']) && $errors == 0){ 
?> 
<div id="error" class="error"> 
<h2 id="standard_error" name="standard_error">Failed to upload tattoo.</h2> 
<p id="standard_explanation" name="standard_explanation"> 
Error uploading file. This error occurred because either the photo was a size we don't support or there was a problem with the image file. 
<br/> 
</p> 
</div> 
<?php 
} 
?> 
<div id="newalbum" align="center"> 
<form id="upload" enctype="multipart/form-data" name="upload" action="" method="post"> 
<table class="formtable" cellspacing="0" border="0"> 
<tbody> 
<tr class="tallrow"> 
<td class="label"> 
Upload Image: 
<br/> 
<small> 
You can upload 
<br/> 
JPG, GIF or PNG 
<br/> 
files. 
</small> 
</td> 
<td> 
<div id="files"> 
<div id="1"> 
<input id="file1" class="inputfile" type="file" name="file1" size="22"/> 
</div> 
</div> 
</td> 
</tr> 
</tbody> 
</table> 
<div class="formbuttons"> 
<input id="" class="inputbutton" type="submit" value="Upload Tattoo" name="Upload" /> 
<br/> 
<small>The file size limit 1.5 MB. If your upload does not work, try uploading a smaller picture.</small> 
<br/> 
</div> 
<?php 
} 
?> 

を使用して、私のFacebookアプリから画像をアップロードできるようにしようとしています

を使用してファイルをアップロードすることはできません。しかし、私はこのコードを実行するときユーザーが "Upload"ボタンを押すと、$ _FILES ['file1'] ['name']の値が空白になります。

Facebookのアプリでこのコードは許可されていますか?ファイルをアップロードする正しい方法は何ですか?

おかげ

編集

問題Facebookであるので、[OK]をクリックします。彼らはどんな要求からもすべてのファイルタグを取り除きます!代わりにiframeを使用することをお勧めします。

皆さん、ありがとうございます!

答えて

3

[OK]をクリックします。問題が見つかりました。 Facebookは要求を送信する前にすべてのファイルタグを削除します。解決策はiframeを代わりに使用することです。

+0

Heh。私はあなたにそのことを伝えていました。私のアプリケーションでは同じ問題がありますが、問題は通常のアプリケーションページがFBでフィルタリングされ、ユーザーがファイルを自分のサーバーはファイルをサーバーに渡す必要があります。 –

+0

誰かがこれを黙認できますか?これは、アプリケーション設定スペースで「iframe」と「fbml」を設定することを意味しますか、それともページ全体に対してを呼び出すのでしょうか?またはフォームのためだけに?私はこの問題が私のために解決されても大丈夫です! –

+0

フォームを含むHTMLをiframe内に配置するだけで済みます。それはどうやって私はそれが働いた。 – lostInTransit

1

あなたはこれを試して、ファイル名にアクセスしようとする前に...

switch ($_FILES['file1']['error']) { 
    case UPLOAD_ERR_INI_SIZE: 
    echo '<p class="warning">File Upload Failed! File too large.</p>'; 
    break; 
    case UPLOAD_ERR_FORM_SIZE: 
    echo '<p class="warning">File Upload Failed! File exceeds limit.</p>'; 
    break; 
    case UPLOAD_ERR_PARTIAL: 
    echo '<p class="warning">File Upload Failed! Please try again.</p>'; 
    break; 
    case UPLOAD_ERR_NO_TMP_DIR: 
    echo '<p class="warning">File Upload Failed! No temp directory.</p>'; 
    break; 
    case UPLOAD_ERR_CANT_WRITE: 
    echo '<p class="warning">File Upload Failed! Failed to write to disk.</p>'; 
    break; 
    case UPLOAD_ERR_EXTENSION: 
    echo '<p class="warning">File Upload Failed!</p>'; 
    break; 
} 

どこに問題がある。これはあなたを教えてください。

+1

また、これは上部で傷つけることはありません: ini_set( 'display_errors'、 '1'); error_reporting(E_ALL); 正常に動作したら取り出してください。 – MSpreij

+0

これを試しました。スイッチのケースには入っていません。それではエラーはありません:(フェイスブックでファイル入力を使用する際にいくつかの制限がありますか? – lostInTransit

+0

MSpreji、この文を追加しようとしましたが、 "Undefined index:file1"というエラーが出ます。 "file1"という名前のタイプを入力してください – lostInTransit

0

お客様のHTMLマークアップにはフォームの終了タグがありません。

<form> 

</form> 

また、フォームのアクションべき自体のいずれかのポイントや画像処理を行い、そのページ(あなたのケースでは、同じファイル)

<?php 
echo("<form id=\"formid\" name=\"formid\" method=\"post\" action=\"".$PHP_SELF."\" 

</form>"); 
?> 
+0

これを両方追加しましたが、ini文を使用するとまだエラーが表示されますMSprejiは - 未定義インデックス:file1を指定しました – lostInTransit

+0

簡単なテストを試してください。 これでもうまくいかない場合は、サーバー設定が問題を引き起こしている可能性があります。 – Coreus

関連する問題