上传图片的最有效方式(两种方法)

时间:2011-05-06 18:02:34

标签: c# asp.net sql-server image performance

方法1

这种方法很常见。如果要插入一些包含文本的数据 和图像,您可以在单击“保存”按钮(保存文本)之前上传图像。

方法2

我创建了一个HttpPostedFile类型的数组:

static int i;
static HttpPostedFile[] fp;

在.aspx中:

<ASP:FILEUPLOAD id="btnBrowse" runat="server" />
<br />
<ASP:BUTTON id="btnUpload" runat="server" onclick="addfile_Click"/>
<br />
<ASP:BUTTON id="btnSave" runat="server" onclick="save_Click" />

btnUpload会将下一张图片添加到数组中:

protected void addfile_Click(object sender, EventArgs e)
{
    if (btnBrowse.HasFile)
    {
        fp[i] = btnBrowse.PostedFile;
        i++;
    }
}

btnSave会在数组中插入图片:

protected void Save_Click(object sender, EventArgs e)
{
    for (int j = 0; j <= i; j++)
    {
        string filename = Path.GetFileName(fp[j].FileName);

        var image = SD.Image.FromStream(fp[j].InputStream);

        image.Save(Server.MapPath("~/images/Profiles_Images/") + filename);
    }
}

工作正常。我有两个问题:

  1. 第二种方法比第一种方法更有效吗?
  2. 如果是这样,如何在不使用静态的情况下保存数组中的文件(不保存静态值)?因为你知道静态效率不高。

2 个答案:

答案 0 :(得分:0)

无论哪种方式都没问题,第二种选择可能会更高效,因为它一次上传所有内容而不是发布文件然后发布另一个文件。这将花费相同的服务器时间,但从用户体验来看,这将是乏味的。

但是,要获得真正优质的用户体验以及一次上传多个文件的功能,请使用uploadify:http://www.uploadify.com/

答案 1 :(得分:0)

目前还不清楚“有效率”对你有什么影响。您是否担心用户(可用性?)或者服务器(性能?)的最佳/最佳效果,或者正确性(这似乎是您在“静态效率不高”中使用它的方式)。 ..

如果要支持多个用户,则无法使用静态。静态在服务器端应用程序中是合理的,并且几乎从不安全地存储服务器代码的用户数据。

如果要逐个存储文件,请考虑使用SQL会话状态或其他一些持久存储,因为在请求之间保存在内存中的文件可能会因进程重启而丢失。