在文件系统中插入图像文件

时间:2013-06-14 08:27:55

标签: c# asp.net sql listview guid

我收到此错误:

不允许从数据类型sql_variant到uniqueidentifier的隐式转换。使用CONVERT函数运行此查询。

采矿守则如下:

源代码:

<asp:ListView ID="ListView1" runat="server" DataKeyNames="UserId" DataSourceID="SqlDataSource1" InsertItemPosition="LastItem" >

       <InsertItemTemplate>

            <asp:TextBox ID="UserPicUrlTextBox" runat="server" Text='<%# Bind("UserPicUrl") %>' />
            <asp:FileUpload ID="FileUpload1" runat="server" />

            <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" />
            <asp:Button ID="CancelButton" runat="server" CausesValidation="false" CommandName="Cancel" Text="Clear" />

        </InsertItemTemplate>
</asp:ListView>

矿山插入参数是:

<InsertParameters>
            <asp:Parameter Name="UserId" Type="Object" />
            <asp:Parameter Name="Category" Type="String" />
            <asp:Parameter Name="Class" Type="Int32" />
            <asp:Parameter Name="UserPicUrl" Type="String" />
              .
              .
           </InsertParameters>

c#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;

public partial class userProfile : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        // Get a reference to the currently logged on user
        MembershipUser currentUser = Membership.GetUser();
        // Determine the currently logged on user's UserId value
        Guid currentUserId = (Guid)currentUser.ProviderUserKey;
        // Assign the currently logged on user's UserId to the @UserId parameter
        e.Command.Parameters["@UserId"].Value = currentUserId;
    }

    protected void SqlDataSource1_Inserting(object sender, SqlDataSourceCommandEventArgs e)
    {
        FileUpload FileUpload1 = (FileUpload)ListView1.InsertItem.FindControl("FileUpload1");
        string virtualFolder = "~/UserPics/";
        string physicalFolder = Server.MapPath(virtualFolder);
        string fileName = Guid.NewGuid().ToString();
        string extension = System.IO.Path.GetExtension(FileUpload1.FileName);
        FileUpload1.SaveAs(System.IO.Path.Combine(physicalFolder, fileName + extension));

        string UserPicUrl = virtualFolder + fileName + extension;
        e.Command.Parameters["@UserPicUrl"].Value = UserPicUrl;
    }
}

目标:我正在尝试将图像存储在文件夹中,并将相应的Url保存在数据库中。

将是一个很好的帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

SqlDataSource1_Inserting将UserId值设置为插入参数

e.Command.Parameters["@UserId"].Value =(Guid)Membership.GetUser().ProviderUserKey;