2017-02-17 5 views
-1

目的の場所にファイルを移動するには、ファイルの場所から破損したファイルをダウンロードしたフォルダに表示されますが、私はダウンロードしたときに、それは私が既存の投稿からすべての提案を試してみましたは、サーバ

破損したファイルをダウンロードしますが、それはdoesnのトリックをしているようだ。

<?php 
$error = "error"; 
$con = mysqli_connect('localhost','root','') or die($error); 
mysqli_select_db($con, 'folder') or die($error); 

$sql = "SELECT * FROM documents"; 
$res = mysqli_query($con, $sql); 
?> 
<!DOCTYPE html> 
<html> 
<head> 
<title></title> 
</head> 
<body> 

<a href="upload.php">Photo</a><br><br> 
<?php 

while ($row = mysqli_fetch_array($res)) { 
    $id = $row['id']; 
    $name = $row['name']; 
    $path = $row['path']; 

    echo $id."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$name."&nbsp;&nbsp;&nbsp;&nbsp;<a href='download.php?dow=$path'>Download</a><br>"; 
} 

?> 

</body> 
</html> 

アップロードコードは次のとおりです。

<?php 
$error = "error"; 
$con = mysqli_connect('localhost','root','') or die($error); 
mysqli_select_db($con,'servicereport') or die($error); 

if (isset($_POST['submit'])) { 

$doc_name = $_POST['doc_name']; 
$name = $_FILES['myfile']['name']; 
$tmp_name = $_FILES['myfile']['tmp_name']; 

if ($name) { 
    $location = "documents/$name"; 
    move_uploaded_file($tmp_name, $location); 
    $query = mysqli_query($con,"INSERT INTO documents(name,path) VALUES ('$doc_name','$location') "); 
    header('location:photos.php'); 

} 
else 

die("please select a file"); 
} 

?> 
<!DOCTYPE html> 
<html> 
<head> 
<title></title> 
</head> 
<body> 
<form action="upload.php" method="post" enctype="multipart/form-data"> 
    <label>Name</label> 
    <input type="text" name="doc_name"> 
    <input type="file" name="myfile"> 
    <input type="submit" name="submit" value="Upload"> 
</form> 
</body> 
</html> 

ダウンロードコードは次のとおりです。

<?php 

include('inc/db.php'); 

if (isset($_GET['dow'])) { 

$path = $_GET['dow']; 

$res = mysqli_query("SELECT * FROM documents WHERE path = '$path' "); 

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename="'.basename($path).'"'); 
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:'.sprintf("%u", filesize($path))); 

set_time_limit(0); 
readfile($path); 

} 

?> 
+0

ほんの少しの提案と話題ですが、PHPで始まったばかりなので、mysqli_ *を使うことをお勧めします。準備された文をどのように使い、それを利用するかを強くお勧めします。 –

+0

アップロードしたファイルを開いたときにこの –

+0

で助けてくれれば、問題なく正しく開くことができますが、ダウンロードすると問題は発生しますか? –

答えて

0

これらの機能は、のために必要であるため、'readfile($path);''set_time_limit(0);' &後に次の2行のコードを追加してください不要なデータを削除したり、破損を防ぐことができます。

追加されるべき、以下のコードを検索:

ob_clean(); 
flush(); 

私はこれがあなたの問題を解決する、願っています。

+0

これはうまくいきました。ありがとうございます:) –

+0

それがうまくいく場合は、正解または投票にしてください。 –

+0

あなたが私の答えに満足しているなら、それを投票するか、正しいものとしてマークして、同じ問題を抱えている人がこの答えを見つけることができるようにしてください。 –