[ad_1]
アップロードされた画像をシステムフォルダーに保存する画像アップロード機能があります。 アップロードされた画像はページにも表示されるはずです。システムフォルダーから画像を取得するには、ashx の助けを借りましたが、画像はページの読み込み時に正しく読み込まれています。 次に、gdvPartner_SelectedIndexChanged で画像を動的に取得したいと思います。 助けてください。
私が試したこと:
ASP.NET
<tr align="center" style="height:40"> <td class="FormLabels" align="right" style="vertical-align: top">Upload Logo : </td> <td align="Left" style="vertical-align: top;width: 30%;padding:5px" colspan="2"> <telerik:RadAsyncUpload ID="flUpload" runat="server" MaxFileInputsCount="1" AllowedFileExtensions=".png" Skin="Web20" Width="200px" /> <asp:Button ID="btnUpload" runat="server" Style="text-decoration: none; border-radius: 5px; border: solid 1px #f39c12;" Text="Upload" CssClass="submitButton" SkinID="Submit" OnClick="btnUpload_Click" /> </td> <td align="Left" colspan="2" style="height: 180px;width: 35%;padding-left:10px"> <asp:Image Width="200px" Height="150px" runat="server" ImageUrl="../UserControl/GetImage.ashx" ID="imgSelectedPhoto" /> </td> </tr>
C#
protected void btnUpload_Click(object sender, EventArgs e) { if (flUpload.UploadedFiles.Count != 0) { SaveAsThumbNail(); } } /// <summary> /// for saving employee photo /// </summary> private void SaveAsThumbNail() { Common cmnObj = new Common(); try { string serPath = Utilities.DecryptString(cmnObj.RetriveKeyFromSettingsTable("PartnerLogoPath")); string newFileName = SessionHandler.TempPartnerId; newFileName = newFileName + "." + ImageFormat.Png.ToString(); string imgPath = serPath + "/" + newFileName; flUpload.UploadedFiles[0].SaveAs(imgPath);//Saving file } catch (Exception ex) { BasePage bp = new BasePage(); bp.GetErrorMessage("", "", ex, Page.Title, "SaveAsThumbNail"); } }
C#
public void ProcessRequest(HttpContext context) { string imgPath = string.Empty; string extension = string.Empty; Common cmnObj = new Common(); string serPath = Utilities.DecryptString(cmnObj.RetriveKeyFromSettingsTable("PartnerLogoPath")); string newFileName = SessionHandler.TempPartnerId; newFileName = newFileName + "." + ImageFormat.Png.ToString(); imgPath = serPath + "/" + newFileName; if (File.Exists(imgPath)) { string contentType = string.Empty; imgPath = Convert.ToString(imgPath); extension = imgPath.Substring((imgPath.Length - 4), 4).ToLower(); switch (extension) { case ".png": contentType = "image/png"; break; default: break; } context.Response.ContentType = contentType; context.Response.TransmitFile(imgPath); } else { context.Response.TransmitFile("~/Images/NoImage.gif"); } }
C#
protected void gdvPartner_SelectedIndexChanged(object sender, EventArgs e) {
C#
string siteHandlerUrl = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + ResolveUrl("~/") + "UserControl/GetImage.ashx"; //HttpWebRequest request = (HttpWebRequest)WebRequest.Create(siteHandlerUrl); //HttpWebResponse response = (HttpWebResponse)request.GetResponse(); imgSelectedPhoto.ImageUrl = Page.ResolveUrl(siteHandlerUrl);
}
解決策 1
上記のコードに基づくと、ashx は実際には出力ストリームではなくファイルを送信しているため、イメージ コントロールは出力ストリームをイメージに変換できます。
誰かが以下に同様の解決策を投稿しました。
asp.net-C#-リモートイメージをロードし、.ashxファイルを使用してブラウザに送信する – コードログ[^]
それが役に立てば幸い!
[ad_2]
コメント