0

登録ページから画像ファイルをアップロードするためにAsyncFileUpload(ajaxToolkit)コントロールを使用しています。アップロードされたファイルの内容はDBに保存されます。したがって、アップロードしたファイルをhttphanderのようなasp:imageコントロールに表示する必要があります<asp:image id="imgLogo" runat="server" ImageUrl="Images.aspx/id=12" />。だからこれを行う方法。

4

3 に答える 3

0

多くのサイトを確認し、この質問の回答を得ました 。http://www.mikeborozdin.com/post/AJAX-File-Upload-in-ASPNET-with-the-AsyncFileUpload-Control.aspx

<ajaxToolkit:AsyncFileUpload ID="afuCompanyLogo" runat="server" 
            OnClientUploadError="uploadError" OnClientUploadComplete="uploadComplete"
            UploaderStyle="Modern" UploadingBackColor="#CCFFFF" 
            ThrobberID="myThrobber" 
        onuploadedcomplete="afuCompanyLogo_UploadedComplete" />
        <asp:Image ID="imgCompanylogo" CssClass="imgCompanylogo" runat="server" Height="80px" Width="80px" AlternateText="" />

protected void afuCompanyLogo_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
        {
            if(afuCompanyLogo.HasFile)
            {
                FileManagementEntity fileManagementEntity = new FileManagementEntity();
                FileManagement fileManagement = fileManagementEntity.Create();

                fileManagement.FileContentType = afuCompanyLogo.ContentType;
                fileManagement.FileContent = afuCompanyLogo.FileBytes;
                fileManagement.Size = afuCompanyLogo.FileBytes.Count();
                fileManagement.OriginalName = afuCompanyLogo.FileName;
                fileManagementEntity.Save(fileManagement);

                ViewState["logoID"] = fileManagement.FileManagementID;
                imgCompanylogo.ImageUrl = "Image.aspx?id=" + fileManagement.FileManagementID.ToString();
                ScriptManager.RegisterClientScriptBlock(afuCompanyLogo, afuCompanyLogo.GetType(), "img", "top.document.getElementById('" + imgCompanylogo.ClientID + "').src='Image.aspx?id=" + fileManagement.FileManagementID + "';", true);
            }
        }
于 2012-12-14T09:40:50.857 に答える
0

画像をbyte[]としてDBに保存していると仮定します。

var data = new byte[1]; //Replace this with your values from DB
var mimeType = "application\pdf"; //Replace this with your values from DB
response.ContentType = mimeType ;
response.BinaryWrite(data);

このコードは、DBから値を取得した後、images.aspxのpage_loadに配置する必要があります。

于 2012-12-14T09:03:53.720 に答える
0

画像ページハンドラのpage_loadメソッドは次のようになります

Images.aspx

protected void Page_Load(sender s, eventagrs e){

var imagecontent= new byte[XXXX]; // Read DB content as bytes for the passed Id

response.ContentType = 'jpeg/gif/anything' ; 
//this should be a valid MIME type saved in database
response.BinaryWrite(imagecontent);

}

編集:

From your comments you are trying to update the image tag src value 
from codebehind using Asp.Net Ajax. 

If you want to do this, first make sure your page has access to view state 
information  about those image tags. This is not a big deal, you simply 
wrap the image tags container panel/div with update panel. 

So your ajax request will send the information about those viewstate and 
push the partial update for those image container panel also.
于 2012-12-14T09:11:07.450 に答える