0

かなり一般的な問題と思われるものに対して、さまざまな解決策を少しいじっていますが、まだ満足のいく方法で解決できていません。

私が達成したいのは、ユーザーが新しいファイルをアップロードしたり、既存のファイルを選択して再利用したりできる何らかの機能です。

私がこれまで使ってきたのは、filefieldfilefield_sourcesimceおよびckeditorモジュールの組み合わせです。ckeditor はソリューションにとってそれほど重要ではないと思いますが、何らかの方法でアーカイブから画像を埋め込むことができる必要があり、これは IMCE で行われます。ファイルブラウザからすべてにアクセスできるようにしたくないので、サブディレクトリを作成し、IMCE設定でフルアクセスを設定して、それを呼び出しましょうdefault/files/site

これは、すべてのファイルハンドリングが IMCE を介して行われている限り問題なく機能しましたが、ファイルフィールドからファイルを直接アップロードすると、ファイルが default/files ルートに配置されてしまうため、フィールド用のフォルダーを設定しましdefault/files/site/moviesた。.flvフォーマット。IMCE 経由でファイルにアクセスしようとしない限り、これは問題なく機能しました。filefield によって作成されたフォルダに IMCE からアクセスできないようですか?

私はまた、大規模なアップロード (200MB 以上) をサポートする必要がある立場にありますが、他のプロジェクトでの私の経験から、FTP を介したファイルのアップロードを許可することは通常、命の恩人ですが、私が理解していることから、IMCE はファイルをサポートしません。それらはデータベースに存在しないため、何らかの方法で Drupal を介してアップロードされます (メッセージが表示されます: The selected file could not be used because the file does not exist in the database.)

私の問題に対する明確な質問がないことは承知していますが、どういうわけか、これをかなり早く理解する必要があります。どうすればこれを解決できますか?この問題を抱えたのは私が初めてではないことは承知していますが、適切で安定した解決策をまだ見つけることができていません。私は何が欠けていますか?

4

2 に答える 2

1

また、このスレッド(http://drupal.org/node/438940)とジョンロックの作品への参照を確認してください:http://www.freelock.com/blog/john-locke/2010-02/using-file- field-imported-files-drupal-drush-rescue

于 2010-04-08T03:23:26.780 に答える
0

まあ、私は頭のてっぺんからIMCEに個人的に精通しているわけではありませんが、ftp経由でアップロードされたファイルをファイルテーブルに追加する必要がある場合、私の衝動は小さなモジュールを書くことです。ユーザーがボタンをクリックしてバッチ処理を開始できるようにします。(Drupal 5 にはバッチ API が存在しないため、これは Drupal 6 を使用していると仮定した場合です。)

上記のバッチプロセスは、適切なディレクトリ内のすべてのファイルを反復処理します。ファイルをアップロードしたと仮定し、file_copy()(Drupal のファイル API から) を使用してファイルを default/files/site にコピーし、次のように追加します。これは、実際には非常に単純drupal_write_record()です。

バッチ API を使用する必要さえないかもしれません。10 ~ 30 個の非常に大きなファイルまたは 200 ~ 300 MB のファイルをアップロードするだけの場合は、多少問題になります。

バッチ API を使用する場合は、http://drupal.org/node/180528を参照してください。これには、バッチ API の動作のかなり基本的な例があります。基本的には、function_a を呼び出し続けることを API に伝えることで構成されます。 、そして function_a の内部で、完了までコンテキスト配列で進行状況を設定します。完了したら、バッチプロセスが終了します。次に、ftp 経由でファイルをアップロードする人は誰でも、Web サイトのボタンを押してファイルを移動して登録するだけです。

于 2010-03-07T02:05:03.350 に答える