0

パス(文字列として保存)があります-例:\\documents\doc1.txt。文字列パスで表されるファイルを使用して、HttpPostedFileBase型の変数を初期化しようとしています。どうすればいいですか?私は次のような方法を見てきました

 Model.File[count] = File.Open(item.PictureDirectory, FileMode.Open); 

ただし、これらはSystem.io.filestreamオブジェクトを返します。

FileStream file = File.OpenRead(filepath);

しかし、どうすればこれをhttppostedfilebaseに変換できますか?

私はここに掲載されていることを正確にやろうとしています

4

1 に答える 1

0

まず、への他の質問リンクのように、入力としてを必要とするメソッドを持ち、次に、として自動的に転送されないHttpPostedFileBaseファイルを送信する必要があることは、メソッドをリファクタリングする必要があることを示唆しています。Pommyによる例では、おそらくの入力がより適切でしょうか?HttpPostedFileBaseStream

さて、もしあなたが絶対にのインスタンスを持たなければならないなら、これがHttpPostedFileBaseあなたが反対していることです。クラスは抽象的であるため、直接構築することはありません。代わりに、継承クラスを作成する必要があります。標準ライブラリ内で、HttpPostedFileWrapper継承し、コンストラクタ入力HttpPostedFileとして受け取ります。

しかし、ここにこすりがあります。のコンストラクターHttpPostedFileは内部であるため、System.Webライブラリーの外部では、インスタンスを直接構築していません。

その場合のオプションは次のとおりです。

  1. HttpPostedFileインスタンスを構築するファクトリまたはSystem.Web内の他のメソッドを見つけます(私の疑いでは、それは見つかりません)。
  2. ベースの独自の継承クラスを実装しますHttpPostedFileBase。これは十分に単純である必要があります。これは小さなクラスであり、それを使用するコードによっては、すべてのメソッドを実装する必要がない場合もあります。
  3. 可能であれば、私の推奨するアプローチ-を使用しないようにコードをリファクタリングし、代わりにHttpPostedFileBase、たとえばを使用します。Stream
于 2013-01-16T21:15:28.660 に答える