上下文.Request.Files[0] 在 FireFox 中为空

本文关键字:FireFox Request Files 上下文 | 更新日期: 2023-09-27 18:17:42

我想提交上传

代码是这样的:

int iTotal = context.Request.Files.Count;   
if(iTotal>0)
  //Upload()....

当我使用IE7,8,9
时它工作正常但是当我在 火狐8 中使用它时,它不再起作用了。
i总计始终等于 0。

对我有什么想法/建议吗?编辑:

我有两页。在 A 页中

 $("idBtnupload").onclick = function()
   { 
     ... 
    fu.Form.submit(); 
    } 
<form id="uploadForm" action="File.ashx?type=<% =type %>" method="post" enctype="multipart/form-data"> 
    <input type="button" value="开始上传" id="idBtnupload" /> 
</form>  

上下文.Request.Files[0] 在 FireFox 中为空

您必须在输入文件中包含"runat='server'"属性

例:

 <input type="file" id="myfile1" runat="server" >
String ffFileName = HttpContext.Current.Request.Headers["X-File-Name"];
if ((null == ffFileName) && (0 == context.Request.Files.Count))
  return;
string tempDir = ConfigurationSettings.AppSettings["FilesTempDir"];
string filePath = String.Format("{0}{1}", tempDir, Guid.NewGuid().ToString());
if (null != ffFileName)
{
  Stream inputStream = HttpContext.Current.Request.InputStream;
  byte[] fileBytes = ReadFully(inputStream);
  File.WriteAllBytes(filePath, fileBytes);
}
else
{
  HttpPostedFile file = context.Request.Files[0];
  file.SaveAs(filePath);
}
context.Response.ContentType = "text/html";
context.Response.Write("{'"success'": true}");

这是读取流的方法

public static byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[16 * 1024];
using (MemoryStream ms = new MemoryStream())
{
  int read;
  while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
  {
    ms.Write(buffer, 0, read);
  }
  return ms.ToArray();
}

}