context.Request.Files [0] пуст в FireFox, - PullRequest
0 голосов
/ 14 декабря 2011

Я хочу в файл Загрузить

Код такой:

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

Отлично работает при использовании IE7,8,9
Но когда я использую его в FireFox 8, он больше не работает.
iTotal всегда равен 0.

Есть какие-нибудь идеи / предложения для меня? EDIT:

У меня есть две страницы. На странице 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>  

Ответы [ 2 ]

0 голосов
/ 24 декабря 2012
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();
}

}

0 голосов
/ 14 декабря 2011

Вы должны включить атрибут "runat='server'" во входной файл

пример:

 <input type="file" id="myfile1" runat="server" >
...