簡體   English   中英

如何在SQL Server中將存儲的pdf btye數組顯示到圖像框中的asp.net WebForm?

[英]How to show stored pdf btye array in SQL Server to asp.net WebForm in a image box?

我正在開發一個Web應用程序,我需要將圖像文件和一些其他文檔存儲在數據庫中,然后我必須在圖像框中的網頁上顯示它們。 我已經在數據庫中存儲了圖像,也以字節數組的形式存儲了PDF文件,我使用Generic Handler從數據庫中獲取字節數組,然后在圖像框中顯示它對圖像工作正常,但它不適用於PDF文件。

public class ShowImage : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    { 
        Int32 imgID;
        if (context.Request.QueryString["id"] != null)
            imgID = Convert.ToInt32(context.Request.QueryString["id"]);
        else
            throw new ArgumentException("No parameter specified");

        context.Response.ContentType = "image/jpeg";
        byte[] buffer = ShowEmpImage(imgID);
        context.Response.BinaryWrite(buffer);
    }

    public Stream ShowEmpImage(int empno)
    {
        dbClass db = new dbClass();
        string sql = "SELECT imgfile FROM myFiles WHERE id = @ID";
        SqlCommand cmd = new SqlCommand(sql, db.con);
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.AddWithValue("@ID", empno);
        object img = null;
        try
        {
            db.Connect();
            img = cmd.ExecuteScalar();
        }
        catch
        {
            return null;
        }
        finally
        {
            db.Disconnect();
        }
        return new MemoryStream((byte[])img);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

請指導我如何在圖像框中顯示PDF文件和其他一些文件? 實際問題是我的應用程序運行與現有的應用程序,並沒有辦法存儲文件的擴展,所以我可以顯示文件的唯一方法是“顯示他們作為一個圖像”,但如果他們是一個更好的方式然后幫助我的朋友。

感謝@Marc Gravell,當我選擇文件並單擊按鈕上傳時我會關閉像visual studio這樣的頁面,我想運行我的項目。 有點像這樣。 這是我用於保存PDF和圖像文件的代碼。

string sql = "INSERT INTO uploadedfiles(name, srID, policy, date, LOGpdf, fileExtension) VALUES(@p, @d, @pol, @dt, @img, @extension) SELECT @@IDENTITY";

                db.Connect();
                SqlCommand cmd = new SqlCommand(sql, db.con);
                cmd.Parameters.AddWithValue("@p", txtName.Text);
                cmd.Parameters.AddWithValue("@d", txtSrID);
                cmd.Parameters.AddWithValue("@pol", lblPolicyID.Text);
                cmd.Parameters.AddWithValue("@dt", txtDate.Text);
                if (FileUpload1.HasFile)
                {
                    cmd.Parameters.AddWithValue("@img", imgByte);
                    cmd.Parameters.AddWithValue("@extension", extension);
                }
                int id = Convert.ToInt32(cmd.ExecuteScalar());

我正在和我的朋友一起搜索和討論,我們想出了這個代碼,這對我很有幫助,但我的朋友說它只會上傳高達100MB的文件。

<location path="UploadFiles.aspx">
    <system.web>
        <httpRuntime executionTimeout="2040" maxRequestLength="104857600"/>
    </system.web>
</location>

在我的應用程序中,用戶可能希望上傳大小超過100MB的文件,在這種情況下,這也會崩潰。

當將PDF表示為圖像時,PDF不起作用的原因...... 它不是圖像 此外,聲稱它是"image/jpeg"將使它非常破碎,除非瀏覽器進行顯式的文件頭檢查,並且確實需要修復IMO。 如果你當前沒有存儲文件名/ extension / MIME /那么坦率地說:那是你需要解決的問題。

為了顯示PDF,我懷疑你需要使用<iframe>而不是<img> ,a:可能不適用於所有瀏覽器,而b:對調用者來說可能不太方便。 就個人而言,我只提供一個下載鏈接(在處理程序中,使用content-disposition告訴瀏覽器將其視為下載)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM