- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名业余的ASP.net开发人员,正在从事我的第一份工作( friend 网站)。使用VS2010的ASP.net v4.0。
他的公司(使用3D打印机)制作3D模型。该网站目前正在开发中,但可以在here中找到。我将是第一个承认该代码有些仓促和被入侵的人,但是我的 friend 对他到目前为止所拥有的一切感到非常满意。
要求之一是他的客户需要能够上载他们的模型设计文件,每个文件设计文件最多可以100 MB(或更多)。我正在努力使它正常工作。
我从使用内置的<asp:FileUpload ID="FileUpload1" runat="server" />
标记和动画gif图像开始,类似于Joe Stagner's tutorial中描述的想法-谢谢Joe,我非常喜欢您的演示文稿。
对于一个小的测试文件,这可以正常工作,但没有任何迹象表明上传进度。因此,我尝试使用Sunasara Imdadhusen在其code project article中提出的想法来改进我的解决方案。我的上传代码如下:
Task t = Task.Factory.StartNew(() =>
{
byte[] buffer = new byte[UPLOAD_BUFFER_BYTE_SIZE];
// Upload the file in chunks so that we can measure how long it is taking.
using (FileStream fs = new FileStream(Path.Combine(newQuotePath, filename), FileMode.Create))
{
DateTime stopwatch = DateTime.Now;
while (stats.Uploaded < stats.TotalSize)
{
int bytecount = postedFile.InputStream.Read(buffer, 0, UPLOAD_BUFFER_BYTE_SIZE);
fs.Write(buffer, 0, bytecount);
stats.Uploaded += bytecount;
double dRate = UPLOAD_BUFFER_BYTE_SIZE / Math.Abs((DateTime.Now - stopwatch).TotalSeconds);
stats.Rate = (int)(Math.Min(dRate, int.MaxValue));
// Sleep is for debugging only!
//System.Threading.Thread.Sleep(2000);
stopwatch = DateTime.Now;
}
}
}, TaskCreationOptions.LongRunning);
stats
是对类的引用,该类存储为 session 变量,并且可以通过PageMethod从在
setInterval(...)
中运行的javascript函数(正在上传)中访问:
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static UploadStatus GetFileUploadStatus()
{
UploadStatus stats = (UploadStatus)HttpContext.Current.Session["UploadFileStatus"];
if ((stats != null) && (stats.IsReady))
{
return stats;
}
else
{
return null;
}
}
最佳答案
这可能有点矫kill过正,但是您可以研究使用BluImp的jQuery File Upload工具(演示站点在此处:http://blueimp.github.com/jQuery-File-Upload/)-名为Max Pavlov的开发人员已修改了原始版本(最初是针对非dotnet技术的)以用于MVC 3。
可以在git hub https://github.com/maxpavlov/jQuery-File-Upload.MVC3上找到它。我已经在MVC 3和MVC 4 Beta中成功实现了这一点。为了使它在MVC 4中有效工作,我要做的唯一一件事就是删除一些ClientDependancy(这是一个用于处理JS和CSS文件的 bundle 和缩小的DLL)代码,因为这可以复制MVC 4中已有的功能,但不能复制MVC中的功能。 3.另外,我在GitHub上的Wiki上添加了一些页面,这些页面描述了我所做的尽管未完成。如果您决定沿这条路线走,我可以用我最近的发现更新一些细节。到目前为止,我在MVC 4集成方面的笔记可以在https://github.com/maxpavlov/jQuery-File-Upload.MVC3/wiki/MVC-4---EnableDefaultBundles中找到。
顺便说一句,我已经设法使用此工具上传了大约2Gb的文件,并且发现它非常灵活!
关于asp.net - 上载大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11779751/
我是一名优秀的程序员,十分优秀!