价值上传器和数据库保存在多个文件上

本文关键字:存在 保存 文件 数据库 | 更新日期: 2023-09-27 18:34:16

我正在使用valums上传器与我找到的ashx文件示例,并希望在上传时将每个文件中的数据保存到db中,单步执行代码,似乎没有任何方法可以区分哪个文件以哪个顺序上传,看着某些变量,代码到处跳转。它适用于单个文件,但超过 1 个是一个问题。另外,上下文。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();

有什么想法吗?

价值上传器和数据库保存在多个文件上

我使用valums上传器没有问题。不同的浏览器以不同的方式上传文件。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);

即使您在客户端中添加多个文件,每个文件也会单独上传。