asp代码怎样实现无组件上传?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp代码怎样实现无组件上传?相关的知识,希望对你有一定的参考价值。

一、无组件上传的原理
我还是一点一点用一个实例来说明的吧,客户端html如下。要浏览上传附件,我们通过<input type="file">元素,但是一定要注意必须设置form的enctype属性为"multipart/form-data":

<form method="post" action="upload.asp" enctype="multipart/form-data">
<label>
<input type="file" name="file1" />
</label>

<input type="text" name="filename" value="default filename"/>

<input type="submit" value="Submit"/>
<input type="reset" value="Reset"/>
</form>

在后台asp程序中,以前获取表单提交的ASCII 数据,非常的容易。但是如果需要获取上传的文件,就必须使用Request对象的BinaryRead方法来读取。BinaryRead方法是对当前输入流进行指定字节数的二进制读取,有点需要注意的是,一旦使用BinaryRead 方法后,再也不能使用Request.Form 或 Request.QueryString 集合了。结合Request对象的TotalBytes属性,可以将所有表单提交的数据全部变成二进制,不过这些数据都是经过编码的。首先让我们来看看这些数据是如何编码的,有无什么规律可循,编段代码,在代码中我们将BinaryRead读取的二进制转化为文本,输出出来,在后台的upload.asp中(注意该示例不要上传大文件,否则可能会造成浏览器死掉):
<%
Dim biData, PostData
Size = Request.TotalBytes
biData = Request.BinaryRead(Size)
PostData = BinaryToString(biData,Size)
Response.Write "<pre>" & PostData & "</pre>" \'使用pre,原样输出格式
\' 借助RecordSet将二进制流转化成文本
Function BinaryToString(biData,Size)
Const adLongVarChar = 201
Set RS = CreateObject("ADODB.Recordset")
RS.Fields.Append "mBinary", adLongVarChar, Size
RS.Open
RS.AddNew
RS("mBinary").AppendChunk(biData)
RS.Update
BinaryToString = RS("mBinary").Value
RS.Close
End Function
%>
参考技术A 网上有很多这样的代码
一般都用里面的一些程序代码就可以实现
上传图片现在都使用的无组件上传
参考技术B 不知道为什么限制你可以上 http://blog.csdn.net/faintbear/archive/2004/10/15/138034.aspx上去自己看

在ASP.NET Core 中上传文件

简介

ASP.NET Core 支持使用缓冲的模型绑定(针对较小文件)和无缓冲的流式传输(针对较大文件)上传一个或多个文件。

传文件的作用

1.上传是支持上传任何文件的,图片只是上传的一种。

2.根据扩展名进行区分你所上传的文件形式。

代码实现

  1. 安装 Microsoft.AspNetCore.StaticFiles 包

Install-Package Microsoft.AspNetCore.StaticFiles
  1. 在 Startup.cs 中的 ConfigureServices 方法中添加以下代码

services.AddDirectoryBrowser();
  1. 在 Startup.cs 中的 Configure 方法中添加以下代码

app.UseStaticFiles();
app.UseFileServer(new FileServerOptions()
 
    FileProvider = new PhysicalFileProvider(
        Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\\uploads")),
    RequestPath = new PathString("/Uploads"),
    EnableDirectoryBrowsing = true
 );
  1. 在 wwwroot 目录下创建一个名为 uploads 的文件夹,用来存放上传文件

  2. 在项目中添加一个上传文件的表单,如下:

<form action="/Home/UploadFile" enctype="multipart/form-data" method="post">
    <input type="file" name="file" />
    <input type="submit" value="上传" />
</form>
  1. 在 HomeController 中添加一个上传文件的 Action 方法,如下:

[HttpPost]
public async Task<IActionResult> UploadFile(IFormFile file)

    if (file == null || file.Length == 0)
        return Content("文件不能为空");

    var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/uploads", file.FileName);

    using (var stream = new FileStream(path, FileMode.Create))
    
        await file.CopyToAsync(stream);
    

    return RedirectToAction("Index");
  1. 在浏览器中输入 http://localhost:port/uploads,就可以看到上传的文件

以上是关于asp代码怎样实现无组件上传?的主要内容,如果未能解决你的问题,请参考以下文章

如何在网页实现上传各种文件或图片视频等功能

jQuery.uploadify文件上传组件实例讲解

iis怎样才能支持asp文件的浏览及上传?

百度编辑器图片上传

将 props 从类组件传递到无状态组件

html5分割上传实现超大文件无插件网页上传插件