我正在使用valums uploader和我找到的ashx文件示例&我想上传,当我上传代码时,想要将数据从每个文件保存到数据库,似乎没有办法区分哪个文件以哪种顺序上传,看着某个变量,代码跳到了一个地方。它适用于单个文件,但超过1是一个问题。此外,context.Request.Files.Count始终为0
byte[] buffer = new byte[request.ContentLength];
fileName = request.RawUrl.Split('=')[1];
fmt = Path.GetExtension(fileName);
using (BinaryReader br = new BinaryReader(request.InputStream))
br.Read(buffer, 0, buffer.Length);
File.WriteAllBytes(StorageRoot + request["qqfile"], buffer);
success = false;
context.Response.Write("{success:true}");
HttpContext.Current.ApplicationInstance.CompleteRequest();
有什么想法吗?
答案 0 :(得分:1)
我已经毫无问题地使用了valums uploader。不同浏览器以不同方式上传文件。 IE将使用文件上传html控件,而Firefox& Chrome可以做到Ajax风格。我编写了自己的上传处理程序,但您需要做的第一件事就是确定使用了哪种方法。
我是这样做的:
if (HttpContext.Current.Request.QueryString["qqfile"] != null)
file = new UploadedFileXhr();
else if (HttpContext.Current.Request.Files.Count > 0)
file = new UploadedFileForm();
else
return new UploadResult("Request was not valid.");
XHR上传意味着您从输入缓冲区读取如下:
int read = HttpContext.Current.Request.InputStream.Read(buffer, 0, buffer.Length);
while (read == buffer.Length)
{
ms.Write(buffer, 0, buffer.Length);
read = HttpContext.Current.Request.InputStream.Read(buffer, 0, buffer.Length);
}
ms.Write(buffer, 0, read);
文件上传更简单:
UploadResult result = new UploadResult(true);
result.Stream = _File.InputStream;
result.Name = System.IO.Path.GetFileName(_File.FileName);
即使您在客户端添加多个文件,每个文件也会单独上传。