方法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);
}
}
工作正常。我有两个问题:
答案 0 :(得分:0)
无论哪种方式都没问题,第二种选择可能会更高效,因为它一次上传所有内容而不是发布文件然后发布另一个文件。这将花费相同的服务器时间,但从用户体验来看,这将是乏味的。
但是,要获得真正优质的用户体验以及一次上传多个文件的功能,请使用uploadify:http://www.uploadify.com/
答案 1 :(得分:0)
目前还不清楚“有效率”对你有什么影响。您是否担心用户(可用性?)或者服务器(性能?)的最佳/最佳效果,或者正确性(这似乎是您在“静态效率不高”中使用它的方式)。 ..
如果要支持多个用户,则无法使用静态。静态在服务器端应用程序中是合理的,并且几乎从不安全地存储服务器代码的用户数据。
如果要逐个存储文件,请考虑使用SQL会话状态或其他一些持久存储,因为在请求之间保存在内存中的文件可能会因进程重启而丢失。