2012-02-20 21 views
1

お客様のためにCMSを作成しました。彼ができることの1つは、PDFファイルをアップロードすることです。これを徹底的にテストした結果、バグは発生していません。しかし、彼は何もアップロードしていないようです。ファイルは決してアップロードされません。彼のブラウザは読み込みを続けます。ファイルをアップロードできません

私のクライアントはFirefoxを使用しています(バージョンはわかりませんが、それは問題ではないと思います)。彼がアップロードしようとしているPDFファイルは約5MBです。極端ではありません。

ファイルをアップロードするときにブラウザがリクエストを完了しない理由はありますか?私はファイルが壊れているとは思わない。

私はこの問題は私のスクリプトにあると思います...が、まだ投稿価値はありません:

if(!empty($_FILES['pdf'])) { 
    $path = '../pdf/'; 
    $filename = $_FILES['pdf']['name']; 

    if(!empty($assoc['pdf'])) { 
     $oldfile = $path.$assoc['pdf']; 

     if(file_exists($oldfile)) { 
      unset($oldfile); 
     } 
    } 

    $success = move_uploaded_file($_FILES['pdf']['tmp_name'], $path.$filename); 
} 

編集:彼は私に、彼がアップロードしようとしているPDFを送信しました。アップロードに約10秒かかりました...私は彼にスピードテストをするためのリンクを提供しています。

+0

HTMLフォームはどのように見えますか?あなたはiframe、フォローアップページ、PHP_SELF、またはAJAX経由でポストしていますか?これがどのように起こっているかによって、他のプロセスがアップロードを中断している可能性があります。たとえば、iframeにアップロードしていて、アップロード中にターゲットフレームがリダイレクトまたはリロードされた場合、Firefoxは無限に投稿を試み続けますが、成功することはありません。 –

+0

彼/彼女はたぶんそれを試す時間がなかったし、 "それは動作していない"言い訳を補うことによって彼の時間を守っています。私たちが持っている最も一般的なエラーと思われる! :) – Dave

+0

あなたのコードにファイルが本当にアップロードされていることを確認するためにいくつかのプリントを追加しましたか? '$ success'はtrueに設定されていますか、ブラウザは決して応答しませんか? – Robert

答えて

1

あなたには2つの問題がありますが、あなたの正確な問題ではないかもしれませんが、答えにつながる可能性があります。

#1。 POST_MAX_SIZEまたはUPLOAD_MAX_FILESIZEのサイズが十分ではありません

PHPプログラマが頻繁に忘れる2つの設定があります。これは恐らく最も明らかな問題です。あなたのテストは完了しましたが、大きなファイルを使って完了しましたか?

あなたがpost_max_sizeの

  1. upload_max_filesizeで
  2. のためのPHPの設定を上書きし、それらを例えば20Mを与えることができます(ご使用のサーバーの構成に応じて)htaccessファイルまたはphp.iniの使用:

    /*.HTACCESS*/ 
    php_value upload_max_filesize 20M 
    php_value post_max_size 20M 
    
    /*PHP.INI*/ 
    upload_max_filesize = 20M 
    post_max_size = 20M 
    

    これらのvariablが使用できないため、ini_set()は使用できません。 PHPが処理を開始する前に使用されるため、この文脈では役に立たなくなります。

    #2。 enctypeはmultipart/form-dataではありません

    あなたのフォームのenctypeプロパティを "multipart/form-data"に設定するのを忘れてしまったため、何もサーバーに送信されません。しかし、あなたが広範囲にテストしたと言って以来、これはあなたの問題だとは思わない。

    しかし、時には、私たちは周りのものを移動してテストすることを忘れて(それはあまりにも私に何が起こる)、私は何かが前に働いていたし、今ではありません確信していたので、念のためにそれをチェックアウト:)

    グッド運行

+0

あなたの答えをありがとうが、私はあなたを失望させなければならない。私は、upload_max_filesizeが少し低い(8MB)が、彼がアップロードしようとしているファイル(6MB)をアップロードするのに十分であることを知りました。また、サーバの問題であれば、ファイルのアップロードを管理していると述べている間に、同じファイルをアップロードすることはできません。また、enctypeは正しいです。 –

+0

post_max_sizeもチェックしましたか、どちらもリンクされています... –

+0

post_max_sizeは問題ありませんでした。 –

0

クライアントがFirefoxとは別のブラウザでファイルをアップロードしてもらうようにしてください。それが他のブラウザで動作する場合は、クライアントFirefox profile folderのファイルMimeTypes.rdfを削除(またはテスト目的で名前を変更/移動)してみてください。

その後、PDFアップロードが行われた場合、2007年に初めて報告されたa Firefox bug(2006年にはbasically the same here)が発生しました。簡単に言えば、ユーザーがファイルをダウンロードするWebサイトは、ダウンロードしたファイルの拡張に関するMimeTypes.rdfファイルを悪意のある、または誤って/知らずに破損する可能性があります。あなたが行うことができます

もの:

  1. Vote for the Firefox bug!
  2. クイックフィックス、それは今のクライアントのために働いて得るために:ユーザー(複数可)が自分のmimeTypes.rdfを削除しました。 Firefoxは次回の起動時に新しい "新鮮な"ものを作成しますが、これはユーザーが作成したすべてのMIMEタイプ/アプリケーションの関連付けをクリアします。また、これは、ユーザーがMimeTypes.rdfファイルを再度破損する他のWebサイトから次のPDFファイルをダウンロードするまで役立ちます。
  3. 「ユーザーエージェント」ヘッダーを使用して、ファイルがFirefoxからアップロードされているかどうかを判断します。その場合、MIMEタイプが受け入れたいものと一致しない場合は、ファイル名の拡張子を再確認し、拡張子があなたの受け入れられたファイルタイプ(あなたの場合は ".pdf")と一致する場合はそのファイルを受け入れます。
関連する問題