上下文.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>
您必须在输入文件中包含"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();
}
}