在更改上传允许的最大文件大小时,我偶然发现了这两个设置.
在sytem.web中,您拥有带有maxRequestLength的http运行时节点.在system.webServer中,您拥有带有maxAllowedContentLength的requestLimits.
现在哪个优先于另一个?我们需要设置两个或者是最后一个(IIS7的那个)足够吗?
我有它工作..但我注意到,一旦我上传的文件变大(约4000k)控制器将不会被调用..
所以我在chunking中添加了哪个修复了这个问题..但是现在当我打开文件时它充满了垃圾字符......
那么使用plupload/MVC 4上传大文件的正确方法是什么?
这是我目前的代码
$(document).ready(function () {
var uploader = new plupload.Uploader({
runtimes: 'html5',
browse_button: 'pickfiles',
container: 'container',
// max_file_size: '20000mb',
url: '@Url.Action("Upload", "Home")',
chunk_size: '4mb',
//filters: [
// { title: "Excel files", extensions: "xls,xlsx" },
// { title: "Text files", extensions: "txt" }
//],
multiple_queues: true,
multipart: true,
multipart_params: { taskId: '' }
});
Run Code Online (Sandbox Code Playgroud)
和控制器
[HttpPost]
public ActionResult Upload(int? chunk, string name, string taskId)
{
string filePath = "";
var fileUpload = Request.Files[0];
var uploadPath = Server.MapPath("~/App_Data/Uploads");
chunk …Run Code Online (Sandbox Code Playgroud) 我正在使用本文第一个答案中的方法:如何从HttpPostedFile创建字节数组,但由于某种原因它不适用于.docx文件.
//viewmodel.File is HttpPostedFileBase
byte[] fileData;
using (var binaryReader = new BinaryReader(viewModel.File.InputStream))
{
fileData = binaryReader.ReadBytes(viewModel.File.ContentLength);
}
Run Code Online (Sandbox Code Playgroud)
在.docx文件fileData显示为{byte[0]},但它适用于pdfs,excel文件(xlsx),2007年前word文件(doc)和图像(即值大于零).保存到数据库,fileData是0x.
如何从HttpInputStream获取docx文件的字节数组?
更新
我的web.config配置了
<httpRuntime targetFramework="4.5" maxRequestLength="102400" />
Run Code Online (Sandbox Code Playgroud)
这适用于大于4MB的xslx文件,但不包括小于80KB的docx文件.
更新2
我可以使用此处说明的方法获取fileData:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.postedfile.aspx
byte[] fileData = new byte[viewModel.File.ContentLength];
viewModel.File.InputStream.Read(fileData, 0, viewModel.File.ContentLength);
Run Code Online (Sandbox Code Playgroud)
但是,如果我将该字节数组保存到数据库并尝试写入文件,则会严重损坏.在这种情况下保存到数据库看起来像0x00000000000000000000000...
更新3
这是整个控制器方法,虽然我不认为看到整个事情是必要的:
[HttpPost]
public ActionResult SaveChangeFile(AttachmentFormViewModel viewModel)
{
if (viewModel.File == null)
return Json(new { success = false, message = "No file was found, please select a file and try again." …Run Code Online (Sandbox Code Playgroud) 有谁知道是否有办法捕获此错误?
基本上我正在尝试实现一些功能,允许用户将文件从网页上传到webapi控制器.
这很好,但如果文件大小超过web.config中指定的最大大小,则服务器返回404错误.
我希望能够拦截这个并返回500错误以及客户端可以使用的消息.
我无法解决在WebApi中执行此操作的问题,因为我在Global.asax中实现的Application_Error方法从未被命中,似乎IIS没有将此传递给WebApi应用程序.
我有一个使用 .net 4.5.2 的较旧的 ASP.NET API Web 服务,并且我将一个包含 base64 图像的对象发布到我的控制器,没有任何问题。现在,当我尝试发布包含更多更大图像的数据时,问题就出现了,并且收到 413 请求实体太大错误。我一直在查找东西并尝试了我在网上能找到的所有东西,但没有运气。我想要上传大约 10MB 大小的文件。让我相信其与服务器相关的一件事是,当在 IIS Express 下运行该服务时,我可以在本地上传大文件。
我尝试将 MaxRequestLength 和 MaxAllowableContentLength 添加到 Web 配置中。
<system.web>
<!-- tell IIS to let large requests through -->
<httpRuntime maxRequestLength="52428800" />
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
Run Code Online (Sandbox Code Playgroud)
我还在 IIS v6.2 中对 Windows 2012 R2 服务器进行了更改,以允许更大的文件。我还调整了服务器上的 UploadReadAhead 值。
我的 API 配置类没有什么特别的。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = …Run Code Online (Sandbox Code Playgroud) 我想将文件大小上传限制为某个限制.但是,这里的问题是我想在超过上传大小时提供弹出警报.但是,此处的网页显示以下错误
HTTP Error 404.13 - Not Found
Run Code Online (Sandbox Code Playgroud)
The request filtering module is configured to deny a request that exceeds the request content length.
这是我的代码
protected void Button1_Click(object sender, EventArgs e)
{
if (fuDocpath.HasFiles)
{
try
{
DateTime now = DateTime.Now;
lbldateStamp.Text = now.ToString("mm_dd_yyyy_hh_mm_ss");
//string foldername = lblsessionID.Text + "_" + lbldateStamp.Text;
string folderpath = (Server.MapPath("~/Uploaded_Files/") + lblsessionID.Text + "_" + lbldateStamp.Text + "/");
Directory.CreateDirectory(folderpath);
if (fuDocpath.PostedFile.ContentLength < 20970000)
{
try
{
foreach (HttpPostedFile files in fuDocpath.PostedFiles)
{
string filename = …Run Code Online (Sandbox Code Playgroud) 通过作为 Azure Web 应用托管的 .NET Core 应用程序上传文件时,我收到以下错误:
您要查找的资源已被删除、更名或暂时不可用。
这在 Postman 中进行了测试,并在大约 22 秒时出现 404 Not Found 超时。
我的应用程序代码如下,去掉多余的东西:
public async Task<IActionResult> PostDocuments(ICollection<IFormFile> files)
{
foreach (var file in files)
{
string path = Path.Combine(uploadsDir, file.FileName);
//Uploading file to "uploads" to be staged. Doesn't get past here.
using (var stream = new FileStream(Path.Combine(uploadsDir, file.FileName), FileMode.Create))
{
await file.CopyToAsync(stream);
}
//Uploading files to Azure
if (await _azure.UploadFile(path, file.FileName)
{
// Stuff to add file to database
}
else
{
return StatusCode(400, "Could …Run Code Online (Sandbox Code Playgroud) 我正在使用Umbraco 7.2.1并在媒体部分上传一些图像.我认为Umbraco的图像大小限制为4Mb.当我尝试上传更大尺寸的图像时,它们只是简单地消失了.
Umbraco应该有一条消息或者某些东西来通知大小限制被越过,但这是一个完全不同的问题.
我的问题是这个限制如何增加?
可能重复:
如何在ASP.NET中增加最大上传文件大小?
我试图验证用户上传的上传内容,如果我们上传小于2 MB的内容,它可以正常工作,但如果我们上传超过2MB的内容,并且经历任何过程,我们会收到错误"Connection is reset".
是否有为什么要增加asp.net web.config文件中的限制?
asp.net ×5
c# ×5
.net ×2
file-upload ×2
asp.net-core ×1
asp.net-mvc ×1
aspose-cells ×1
aspose.words ×1
azure ×1
filesize ×1
iis ×1
jquery ×1
plupload ×1
settings ×1
umbraco ×1
umbraco7 ×1
upload ×1
web-config ×1
web-services ×1
webforms ×1