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.根据扩展名进行区分你所上传的文件形式。
代码实现
安装 Microsoft.AspNetCore.StaticFiles 包
Install-Package Microsoft.AspNetCore.StaticFiles
在 Startup.cs 中的 ConfigureServices 方法中添加以下代码
services.AddDirectoryBrowser();
在 Startup.cs 中的 Configure 方法中添加以下代码
app.UseStaticFiles();
app.UseFileServer(new FileServerOptions()
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\\uploads")),
RequestPath = new PathString("/Uploads"),
EnableDirectoryBrowsing = true
);
在 wwwroot 目录下创建一个名为 uploads 的文件夹,用来存放上传文件
在项目中添加一个上传文件的表单,如下:
<form action="/Home/UploadFile" enctype="multipart/form-data" method="post">
<input type="file" name="file" />
<input type="submit" value="上传" />
</form>
在 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");
在浏览器中输入 http://localhost:port/uploads,就可以看到上传的文件
以上是关于asp代码怎样实现无组件上传?的主要内容,如果未能解决你的问题,请参考以下文章