0

私はphpでblueimpを使用しています。HTML では、User_ID (ログイン後、DB からのユーザーの ID) を $_POST 値としてアップロード ハンドラーに送信するための非表示の入力フィールドを配置しました。User_ID 値をアップロード ディレクトリ名として使用して、各ユーザー ファイルを互いに分離します。

HTML:

    <form id="fileupload" action="server/php/index.php" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="user_file_directory" id="user_file_directory" value="<?php echo $_SESSION['user_ID']; ?>">

index.php :

<?php
error_reporting(E_ALL | E_STRICT);
require('UploadHandler.php');
$user_filedirectory = $_POST['user_file_directory'];
$urlHolder = 'user_'.$user_filedirectory.'/';
$options = array(
                'upload_dir' => $_SERVER['DOCUMENT_ROOT'].'/ds-admin/server/php/'.$urlHolder,
                'upload_url' => './server/php/'.$urlHolder.'/',
);
if($urlHolder){
    $upload_handler = new UploadHandler($options , true , null);
}
?>

これは何かをアップロードするのにうまく機能し、アップロード後にサムネイルを表示して拡大することさえできます。しかし、HTML をリロードすると、既存のファイルのリストが空になり、ファイルはサーバーの正しいフォルダー内にまだ存在します。ファイルを再アップロードすると、新しいファイルのみが表示されます。

HTML ページの読み込み時にカスタム アップロード フォルダのコンテンツを取得するにはどうすればよいですか? HTML のスクリプト部分で download-file-directory を設定する必要がありますか?

4

3 に答える 3

1

$_POST問題は、投稿リクエストに含まれている場合にのみ値を持つ配列内のファイルをチェックすることです。問題は、投稿が発生したときにそれらをどこかに保存しないことです。

if (isset($_POST['user_file_directory'])) {
    //store the values...
}

例を挙げると、MySQL などのデータベースを使用して値を保存するか、ファイルのリストをローカル ファイルに保存するか、$_SESSION変数に保存するか、またはわかっている場合は保存せずにそのまま使用することもできます。ファイルが配置されている場合は、scandirを使用できます。

于 2015-02-17T16:33:14.837 に答える
0

これは古い投稿であるため、私の貢献は関係ないかもしれませんが、この投稿は質問に答えるのに役立ち、同じ問題に対する特定の解決策を提供したいと思いました.

以前から生成し、投稿変数として渡している文字列でフォルダーの名前を設定できるようにする必要がありました。この文字列はデータベースに保存され、クライアント固有です。ただし、申請手続き完了後は使用しません。

アップローダは、セッション ID をフォルダ名として使用することを除いて、必要なことはすべて実行します。このシステムでは、セッション変数が存在する限り、すべてが意図したとおりに機能します。

とにかく、これが私がしたことです: アップロードシステムのルートにある index.php ページで、私は次のことを行いました:

$app_code = $_POST['app_code'];
session_id($app_code);
session_start();

それがインデックスページです。

Class UploadHandler.php ページで、次のように設定しました。

function __construct($options = null, $initialize = true, $error_messages = null) {
    $this->response = array();
    $this->options = array(
        'script_url' => $this->get_full_url().'/'.basename($this->get_server_var('SCRIPT_NAME')),
        'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/files/',
        'upload_url' => $this->get_full_url().'/files/',
        'user_dirs' => false,
        'mkdir_mode' => 0755,
        'param_name' => 'files',

これに

function __construct($options = null, $initialize = true, $error_messages = null) {
    $this->response = array();
    $this->options = array(
        'script_url' => $this->get_full_url().'/'.basename($this->get_server_var('SCRIPT_NAME')),
        'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/files/',
        'upload_url' => $this->get_full_url().'/files/',
        'user_dirs' => true,
        'mkdir_mode' => 0755,
        'param_name' => 'files',

以上です!

これで、システムは意図したとおりに機能します。本当にありがとう!

于 2015-11-11T11:31:12.790 に答える