2016-07-07 3 views
1

私は英語とアラビア語の2言語のプロジェクトに取り組んでいます。アラビア語版はサブフォルダ(Ar)にあります。サブフォルダにイメージをロードすることはサーバー上では機能していません

ビジュアルスタジオローカルホストの両方のバージョンですべて正常に動作します。しかし、私は実際のサーバーにWebサイトを展開しました。私は、アラビア語版の画像が英語版と同じパスを取得することに気付きました(画像は表示されません)。

私はこのコードを経由してサブフォルダに画像をアップロードする:

string fileExt = System.IO.Path.GetExtension(fileBgUpload.FileName); 
string filename; 
string guid = Guid.NewGuid().ToString(); 
try 
{ 
    if (fileExt != "") 
    { 
     if (fileExt == ".jpg" || fileExt == ".jpeg" || fileExt == ".JPG" || fileExt == ".JPEG") 
     { 
      if (fileBgUpload.HasFile) 
      { 
       filename = Path.GetFileName(fileBgUpload.FileName); 
       fileBgUpload.SaveAs(Server.MapPath("/img/Gallery/") + filename + guid + ".jpg"); 
       imgBackground.ImageUrl = ("/img/Gallery/") + filename + guid + ".jpg"; 
      } 
     } 
    } 
} 

ので、データベース内の画像のURLは、Visual Studioで

/img/Gallery/Imagename.jpg 

だろう、私はウェブサイトを実行すると、すべてが正常に動作します。画像のURLは次のとおりです。

localhost:1020/Ar/img/Gallery/Imagename.jpg 

サーバー(ホスト)上の同じ事、画像に次のURLを与える:

www.mydomain.com/img/Gallery/Imagename.jpg 

をこれは私の問題であり、画像はそれとして表示されませんメインフォルダのパスを取得します。

アイデア?私は何をしているのか誰にでも教えてもらえますか?この場合、ビジュアルスタジオではすべてが正常に動作します。

+0

アラビア語の画像をアップロードするときは、パスに/ Ar /を追加して、画像が所属するサーバーに通知する必要があります。 – Kami

答えて

1

Webサイトを展開すると、サーバーでIISが使用され、フォルダ(Ar)が仮想ディレクトリに変更される可能性が最も高くなります。

Visual Studioでは、まずVisual StudioローカルサーバーをIIS Expressに変更する必要があります。次に、(Ar)フォルダの仮想ディレクトリを作成し、同じ結果が得られるかどうかを確認します。

here

あなたのコードに変更する必要があり、最後のものは、文字列のパスに「/ ARを/」を追加しても、それをデータベースに保存する前に読んでください仮想ディレクトリを作成します。

例えば

imgPathForDb="/Ar/"+ your string path 

または

"/Ar/img/Gallery/" + filename + guid + ".jpg"; 

開発者のほとんどは、むしろVisual Studioのローカルサーバーよりも、IISを好みます。そのため、今後のプロジェクトでIIS Expressを使用することを強くお勧めします。

+0

ビジュアルスタジオサーバーをIIS Expressに変更しました。今は動作していません。サーバーと同じように。 –

+0

しかし今、私はArフォルダを仮想ディレクトリ(新しいものを作成しない)に変更したいと思います。では、Visual Studioのフォルダを仮想ディレクトリに変換するものがありますか? –

+1

プロジェクト名 - >追加 - >新しい仮想ディレクトリを右クリックします。 Arフォルダを参照し、エイリアスの名前を付けてください。 – reaz

関連する問題