1

アップロードされたファイルの名前をアップロード時に SQL データベースに渡す方法を理解するのに助けが必要です。これまでのところ、アップローダーを機能させることしかできませんでした。

このプロジェクトは Visual Web Developer 2008 でビルドしているため、Sql データ ソースと接続文字列はページのコードで確立されます。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ARW-KidsConnectionString1 %>" 
    DeleteCommand=" ... " 
    InsertCommand="INSERT INTO [Kids] ( ... , [Picture],  ...) VALUES ( ... , @Picture,  ...)" 
    ProviderName="<%$ ConnectionStrings:ARW-KidsConnectionString1.ProviderName %>" 
    SelectCommand=" ... " 
    UpdateCommand=" ... ">

これが焦点を当てているのは挿入コマンドであるため、スニペットを編集しました。テーブル「Kids」の「Picture」列には、特定の子供のアップロードされた写真の名前が含まれているはずです。これは、写真が利用できない場合に使用されるプレースホルダーの写真があるため重要です。

画像がアップロードされるフォームのコードは次のとおりです。これは、新しいリストのすべての情報を収集するフォームを含む DetailsView の一部です。

<InsertItemTemplate>
                Upload Image:<br />
                <asp:FileUpload ID="picUpload" runat="server" />
                <asp:CustomValidator ID="imageCheck" runat="server" ErrorMessage="Upload Image Files Only" CssClass="ErrorMsg"></asp:CustomValidator>
            </InsertItemTemplate>

そして、画像のアップロードを処理するコード ビハインドの完全なメソッドを次に示します。DetailsView の ItemInserting イベントで起動していることに気付くでしょう。

protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
    FileUpload pu = (FileUpload)DetailsView1.FindControl("picUpload");
    string virtualFolder = "~/WisconsinKids/Kid_Images/";
    string physicalFolder = Server.MapPath(virtualFolder);
    string fileName = "nopic.jpg";

    if (!pu.HasFile)
    {
    }

    if (pu.HasFile)
    {
        if (pu.FileName.ToLower().EndsWith(".jpg") ||
            pu.FileName.ToLower().EndsWith(".jpeg") ||
            pu.FileName.ToLower().EndsWith(".gif") ||
            pu.FileName.ToLower().EndsWith(".png") ||
            pu.FileName.ToLower().EndsWith(".bmp"))
        {
            fileName = pu.FileName.ToString();
            pu.SaveAs(System.IO.Path.Combine(physicalFolder, fileName));
        }

        else
        {
            CustomValidator imageCheck = (CustomValidator)DetailsView1.FindControl("imageCheck");
            imageCheck.IsValid = false;
            e.Cancel = true;
        }
    }
}

私がやりたいことは、その文字列「fileName」をテーブル Kids の Picture レコードにプッシュすることです。フロントエンドで既にデータソース接続が確立されているので、コード ビハインドで再度行う必要はないと判断しましたが、3 日間検索した後、アイデアがなくなりました。

助けてくれてありがとう。さらに情報が必要な場合は、お知らせください。明確にするよう努めますが、私はこれが初めてであることを覚えておいてください.

4

1 に答える 1

0

試す:

e.Values["Picture"] = pu.FileName;

ここに例があります。それによると、必要なのは上記だけです。

于 2013-02-08T01:17:54.613 に答える