html 如何从网页上的用户获取图像并使用www.example.com将此图像存储在sql server数据库中asp.net?

fzsnzjdm  于 2023-04-18  发布在  SQL Server
关注(0)|答案(1)|浏览(130)

我做了一个网站与用户的个人资料,在那里他们可以上传自己的头像。我需要从用户的照片,并存储在用户数据库中。首先从用户的图像和发送信息到服务器:

saveButton.onclick = (() => {
        const file = photoInput.files[0];
        const reader = new FileReader();
        reader.readAsArrayBuffer(file);
        reader.onload = (async () => {
            const bytes = reader.result;
            const description = descriptionInput.value;
            const data = JSON.stringify({
                photo: bytes,
                description
            });

            await fetch("[username]/changedata", {
                method: "PUT",
                headers: {
                    "Content-Type": "application/json"
                },

                body: data
            });

            window.location.reload();
        });
    });

然后尝试将此图像存储在用户数据库中:

app.MapPut("{username}/changedata", async (string username, HttpContext context) =>
        {
            var data = await context.Request.ReadFromJsonAsync<UserDataChange>();
            using var con = new SqlConnection(connection);
            await con.OpenAsync();
            var command = new SqlCommand();
            command.Connection = con;
            command.CommandText = "UPDATE [users] " +
                                  "SET description=@description, picture=@picture " +
                                  "WHERE username=@username";
            command.Parameters.AddWithValue("username", username);
            command.Parameters.AddWithValue("description", data.Description);
            command.Parameters.AddWithValue("picture", data.Photo);
            await command.ExecuteNonQueryAsync();
            await con.CloseAsync();
        });

UserDataChange类:

public class UserDataChange
{
    public byte[] Photo { get; set; }
    public string Description { get; set; }
}

但是byte[]在这种情况下是无效类型。

643ylb08

643ylb081#

通常对于头像的处理,因为文件大小很小,我会选择转换成base64格式。
How to change upload file to base64 format
将数据库中的图片字段设置为nvarchar(4000),如果不够可以继续增加,通常我们会限制头像图片的大小,比如不能大于200k或者1M。
然后从数据库中取出后,使用img标记来显示它。

相关问题