2013-07-24 13 views
5

プロジェクトはMVC 4 C#ベースのWebアプリケーションです。C#ローカルではなくサーバー上のフォルダにファイルを保存します

私は現在ローカルで作業しており、ローカルで実行中のアプリケーションにデバッグモードでファイルをアップロードし、そのファイルを自分のローカルフォルダではなくWebサーバーに保存したいと考えています。

現在使用している:

if (!System.IO.File.Exists(Server.MapPath(PicturePath))) 
{ 
    file.SaveAs(Server.MapPath(PicturePath)); 
} 

を私たちが直接Webサーバに保存するには、このコードを活用するにはどうすればよいです。それも可能ですか?

ファイルはローカルパスに保存され、パスはデータベースに保存されるため、手動でファイルをWebサーバーにアップロードする必要があります。

+0

なぜアプリケーションをWebサーバーにデプロイしないのですか? – Icarus

+0

あなたのアプリをローカルで実行したいのですが、イメージをあなたのウェブサーバーに保存したいですか?なぜあなたはあなたのウェブサーバー上の共有フォルダに画像を保存しないのですか? –

+0

私は自分のローカル環境でデバッグしているので、アプリケーションをデプロイする前にすべてのバグを修正しています。 –

答えて

6

SaveAs機能は、ファイル名を取り、あなたがそれを与える任意のパスにファイルを保存し、次の条件が満たされている提供:

  • あなたは、ローカルマシンあなたのローカルアカウントを持っているファイルパス
  • にアクセスすることができますファイルパスに書き込む正しい特権

あなたのコードを実行するときに確認できるweb.config設定があることをお勧めします。次に、代わりにServer.MapPathを使用するか絶対パスを使用するかを決定できます。

<appSettings> 
    <add key="RunningLocal" value="true" /> 
    <add key="ServerFilePath" value="\\\\MyServer\\SomePath\\" /> 
</appSettings> 

と「ライブ」モードでは:「デバッグ」より(ローカルで実行)で次の設定を持っているかもしれません例えば

<appSettings> 
    <add key="RunningLocal" value="false" /> 
    <add key="ServerFilePath" value="NOT USED" /> 
</appSettings> 

を次に、あなたのコードは何かを見てこのように:

bool runningLocal = GetFromConfig(); 
bool serverFilePath = GetFromConfig(); 
string filePath; 

if(runningLocal) 
    filePath = serverFilePath; 
else 
    filePath = Server.MapPath(PicturePath); 

if (!System.IO.File.Exists(filePath)) 
{ 
    file.SaveAs(filePath); 
} 
+0

私は自分のローカルからWebサーバーに直接ファイルパスを使用する場合、自分のローカルのアカウントがそのディレクトリへの書き込みアクセス権を持っている限り、その場所に直接保存する必要がありますか? –

+0

@RobCarroll:正しい。 IISを使用してローカルで実行している場合は、IIS内で使用されているユーザーアカウントで、すべての助けを借りて – musefan

+0

にアクセスする必要があります。これはまさに私が探していたものです。 –

関連する問題