-2

重複の可能性:
ユーザーがファイルのアップロード先を選択できるようにするにはどうすればよいですか?

ユーザーがファイルをアップロードする場所を選択できるようにしたいと考えています。誰かが私を助けることができれば、それは素晴らしいことです.

uploader.html http://pastebin.com/LQP9jxLH

<div id="main">
<center><h2>File Uploader Beta</h2></center><br />
<center>
<form action="upload.php" method="post" enctype="multipart/form-data">
File: <input type="file" name="filename" />
<input type="submit" value="Upload" />
</form>
</center>
</div>

upload.php http://pastebin.com/CtM1LW13

$folder = "files/";
$HTTP_POST_FILES = "";
if(isset($_FILES['filename']['tmp_name'])) // Check if $_FILES['filename']['tmp_name'] is there
{
        if (is_uploaded_file($_FILES['filename']['tmp_name']))  {  
                if (move_uploaded_file($_FILES['filename']['tmp_name'], $folder.$_FILES['filename']['name'])) {
                        Echo "Your file has been uploaded! You should probably tell Cody what you uploaded so he can get it in the right place. :)";
                } else {
                        Echo "Haha! You don't have access to do that.";
        }
        } else {
                Echo "Your upload has failed.";
        }
}

すべての助けに感謝します。:)

また、ファイルがアップロードされたら、スクリプトをページに生成する必要があります。たとえば、example.jpg が /Cody/Pictures にアップロードされたとします。削除します

ファイルが見つかりませんでした..

ファイル名: $FileName ダウンロード:

誰でもできますか?できればありがとう!

4

2 に答える 2

1

あなたがとても若いように見えるので、私はこれをするだけです:

(name属性として)というアップロードパスを含むフィールドをpathアップロードフォームに追加します。アップロードパスは、フォルダーセレクターを使用して入力または選択するだけです$folder。 PHP関数scandir$files=scandir($folder);)。これにより、内のすべてのファイルとフォルダのリストが配信されます$folder。(フォルダfooとファイルが含まれていると仮定しますindex.html)。この時点で$files、-functionによって配信されるリスト()を繰り返しscandir、現在のアイテムが。を使用してディレクトリであるかどうかを確認しますis_dir

function listFiles($directory)
{
    $files=scandir($directory);
    for($i=0; $i < count($files); $i++)
    {
        if(is_dir($files[$i]) && file_exists($files[$i]))
        {
            echo '<a href="javascript:getFolderContents('.json_encode($files[$i]).');">'.htmlentities($files[$i]).'</a>';
        }
    }
}
echo '<div id="uploadcontainer">';
listFiles($folder); //you must have declared $folder
echo '</div>';

その場合、動的JavaScript関数を実行する動的ハイパーリンクを生成できます。あなたのトップレベルには、次のようなリンクが1つだけ届きます。

<a href="javascript:getFolderContents('foo');">foo</a>`

もちろん、JSONまたはAjaxを使用してパラメーターのフォルダーコンテンツを配信するJavaScript関数である関数getFolderContentsを定義する必要があります。

function getFolderContents(folder)
{
    Request=new XMLHttpRequest();
    Request.open("GET", "/getFolderContents.php?folder="+encodeURIComponent(folder), true);
    Request.onreadystatechange=function()
    {
        if(Request.readyState==4 && Request.status==200) //succeeded
        {
            document.getElementsByName("path")[0].value=folder+"/";
            document.getElementById("uploadcontainer").innerHTML=Request.responseText;
        }
    }
    Request.send(null);
}

このリクエストが送信されると/getFolderContents.php、このPHPファイルを作成し、そこに関数をコピーしてlistFiles(上記のように)、次のコードを実行する必要があります。

listFiles($_GET["folder"]);

私はそれをテストしていません、ただすぐに書かれました、そしてもちろんあなたはそれをあなたのニーズに適応させました。また、このスクリプトでは元に戻せないため、1つのディレクトリをもう一度上に移動するなど、いくつかのオプションが不足しています。

ドイツからよろしくお願いします。

于 2012-07-14T14:12:02.180 に答える
0

フォームを変更する必要があります-たとえば

<form action="upload.php" method="post" enctype="multipart/form-data">
File: <input type="file" name="filename" /><br />
Directory: <select name="folder">
<option>Bob</option>
<option>Cody</option>
</select>
<input type="submit" value="Upload" />
</form>

そして、upload.php ファイル

次の行を変更します: $folder = "files/";

$folder = $_POST[folder]."/";

ディレクトリ Bob と Cody が作成されていることを確認してください。

これで始められるはずです。

CSSでスタイリングを検討してみる

<style>
.someclass{
  color:#FFF;
  font-weight:700;
}
</style>

<div class="someclass">White bold text</div>
<div class="someclass">Also White bold text</div>

私はあなたがまだ13歳であることを知っているので、それに固執してください:)

于 2012-07-14T14:09:15.427 に答える