2016-08-11 15 views
2

問題があります。私はファイルをアップロードしてWebページを作成しました。ファイル(ファイルパス)に正しくURLを付けたデータベース(MySQL)を持っています(データベース内のurlはサーバ上のフォルダにあります)。そして今、私は書き込み/検索PHPスクリプトは、アップロードされたものをこのファイルをダウンロードしようとしています。 Web上のすべてが正常に動作しますが、このダウンロードスクリプトは機能しません。私は読んで、私のための最良の方法は、 'ヘッダー'でダウンロードされると思うが、私は試していたし、何もしていなかった。ファイルは私たちのディスクにダウンロードされていますが、名前は正しくありません。ファイル拡張子は正しいですが、ファイルが正しいプログラムで開いていますが、ファイル名にchars( ';'、 ':'など)拡張子の欠如、悪名)。そして2番目の問題:ダウンロードされたファイルはすべて空です(サイズは0b)。助けを事前に感謝PHP- URLからファイルをダウンロードする

私の悪いダウンロードコード:?

<?php 
    $data=date('Y-m-d_H:i:s'); 
    $nazwa=$_POST['downtitle']; 
    $urlek=$_POST['downurl']; 
    $extrozsz=$_POST['downext']; 
    $filePath = $urlek; 
    $fileName = $nazwa.$data.".".$extrozsz; 

    //------------------------------------------------------------------------ 

// $fd = fopen($filePath,"r"); 
// $size = filesize($filePath); 
// $contents = fread($fd, filesize($filePath)); 

// fclose($fd); 

// header("Content-Type: application/octet-stream"); 
// header("Content-Length: $size;"); 
// header("Content-Disposition: attachment; filename=$fileName"); 

// echo $contents; 

    //---------------------------------------------------------------------- 


//  set_time_limit(0);  
//  while($urlek = $response->fetch()) 
//  { 
//  $my_pliki = file_get_contents("$urlek"); 
//  $my_file = fopen("$urlek","w+"); 
//  fwrite($my_file,$my_pliki); 
//  fclose($my_file); 
//  } 

//---------------------------------------------------------------------------- 

$quoted = $filePath; 
$size = filesize($file); 

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename=' . $quoted); 
header('Content-Transfer-Encoding: binary'); 
header('Connection: Keep-Alive'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . $size); 

>

答えて

0

filenameパラメータはよくあなたは文字を使用したいので、ときRFC6266

に記述されているいくつかの制限を有していますがISO-8859-1文字セットに存在しない場合は、filename*ヘッダーを使用するか、ファイル名からこれらの文字を削除する必要があります。

<?php 
    $data=date('Y-m-d_H:i:s'); 
    $nazwa=$_POST['downtitle']; 
    $urlek=$_POST['downurl']; 
    $extrozsz=$_POST['downext']; 
    $filePath = $urlek; 
    $fileName = $nazwa.$data.".".$extrozsz; 

     header("Pragma: public"); 
     header("Expires: 0"); 
     header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
     header("Content-Type: application/force-download"); 
     header("Content-Disposition: attachment; filename=\"" . $fileName."\""); 
     header("Content-Description: File Transfer"); 
     readfile($filePath); 

?> 

そして、すべてが今OKですが、私は今、一つの質問があります:MySQLデータベースでは、私はタイトルを持っている、記述そうするニースのソリューションは、here

0

おかげで、私はこれで私のPHPを編集見つけることができます、追加された日付、初日、私は検索フィールドを持っていると思います。私は入力タイプ= "検索"でそれをしましたが、データベース内のこの指定されたテーブルの検索には現在どのスクリプトが使用されていますか?私は「好き」について知っていますが、いくつかは良いですか?そしてすべての後正しい結果を返し、この検索ワードがOKであるデータベースからすべてを表示するいくつかのヒント?弱い英語と感謝のために申し訳ありません。

+0

これはあなた自身の質問に対する回答ですか、元の質問に対する編集ですか?あなたは別の質問であなたの質問に答えているようです。悪い習慣。あなたが新しい質問をするのが一番です。「私は1つの質問があります...」 – Martin

+0

同意します。 1つの見出しの下に3つの質問があるので、できるだけ喜んでいる人が最後の質問を見ることはありません。また、あなたがあなたの質問を投稿したときに回答を得るかもしれない –

0

すべてOKですが、別の問題です。私はウェブサイトでニュースを表示するためのコードを持っています。すべてのニュースが同時に表示されています(長すぎるサイト)。私はウェブサイトの番号の下に(すべてのウェブサイトの下に、古いニュースで2番目のサブページに転送するためにこれを置いています)。しかし、それはどうですか? SUPまたはサブなど、小さな単語、数字のためですが、すべて検索された形式のデータベース:

$zapytanie='SELECT * FROM filetable WHERE Section="Other" ORDER BY ID DESC LIMIT 10'; 

これは、最新の10件のニュースを示すために私のPHPコードクエリであるが、私は一番下に、通常は小さな数字を追加した場合、コードをどのように構築します次の10個のニュースを表示するために(いいえ、ここでid = "10-11"と言うと、1000個以上のニュースがあるとすれば、それはあまりにも原始的です)、次の10個または20個のニュースのページを表示するための自動コードが必要です。

+0

'LIMIT'は二つの引数、** offset **と** return count **をとることができるので、' LIMIT '' LIMIT 20 、10 'は21番目のレコード(21-> 30)から10レコードを返します。 [MySQLマニュアル](https://dev.mysql.com/doc/refman/5.5/en/select.html) – Martin

関連する問題