0

アップロードされたすべての画像のリンクを表示できるファイル共有サイトを作成しようとしています。ユーザーが 1 つのファイルをアップロードすると、既にアップロードされているファイルを表示したり、別のファイルをアップロードしたりできます。ただし、現在 2 つの問題があります。 1. ユーザーが画像をアップロードした後、メインのアップロード ページを再表示する方法がわかりません。2. 存在するファイルに基づいてリンクを動的に作成する方法がわかりません。

これが私がこれまでに持っているコードです:

HTML/PHP ファイル共有サイト

<body>
<h2>File-Sharing Site</h2>
<h3>Upload file</h3>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
Search for file: <br />
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Upload" />
</form>
</body>
</html>

PHP

<?php
    $allowedExts = array("jpg", "jpeg", "gif", "png");
    $extension = end(explode(".", $_FILES["file"]["name"]));
    if((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 800000)
    && in_array($extension, $allowedExts))
    {
    if($_FILES["file"]["error"] > 0)
    {
        echo "Error: " . $_FILES["file"]["error"] . "<br />";
    }
    else
    {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Stored in: " . $_FILES["file"]["tmp_name"];

        if (file_exists("upload/" . $_FILES["file"]["name"]))
        {
            echo $_FILES["file"]["name"] . " already exists. ";
        }
        else
        {
            move_uploaded_file($_FILES["file"]["tmp_name"],
            "upload/" . $_FILES["file"]["name"]);
            echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
        }
    }
}
else
{
    echo "Invalid file";
}

?>

4

3 に答える 3

2

これをメイン ページに追加して、アップロードされたファイルを表示できます。

<?php
if ($handle = opendir('upload/')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo "$entry<br>";
        }
    }
    closedir($handle);
}   
?>

もちろん、メイン ページにリダイレクトしてファイルのリストを表示し、さらにファイルをアップロードする必要があります。または、ajax を使用してファイルをアップロードし、リダイレクトを強制しないようにします。

これをすべて達成するために既製のプラグインを使用しました: http://blueimp.github.com/jQuery-File-Upload/

于 2012-10-01T02:18:01.217 に答える
0

Ajaxファイルのアップロードを使用できます。ajaxを使用してファイルをアップロードし、応答としてファイルパスを返します...次に、その応答をページ上のリンクとして出力します(一部のdiv、フィールド...)

 $.ajaxFileUpload
    (
        {
            url:'upload_file.php',
            secureuri:false,
            fileElementId:'file',
            dataType: 'json',
            success: function (response)
            {
                $("#div_where_you_print_response").html(response)
            },
            error: function (data, status, e)
            {
                alert(e);
            }
        }
    );
于 2012-10-01T18:59:18.317 に答える
0

1)ヘッダー機能header('Location: ... ');を使用して、ユーザーをメインのアップロード ページにリダイレクトします
。2) ファイル リンクを保存して表示するには、*sql ソリューションを使用する必要があります。
2a) アップロードされたすべてのファイルに一意のファイル名を付けます (つまり、md5($file['name'])

于 2012-09-30T23:02:48.803 に答える