从NameValueCollection上传图像到服务器

本文关键字:服务器 图像 NameValueCollection | 更新日期: 2023-09-27 17:52:38

我正在使用ASP.net 4.5和VB.net

这是我的TestPage。aspx代码

    <%@ Page Language="VB" MasterPageFile="~/Master.master"  AutoEventWireup="false" CodeFile="TestPage.aspx.vb" Inherits="TestPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderMaster" runat="Server">
                        <form role="form" method="post" id="Test_form" action="TestPageLOAD.aspx"
                            <div class="form-group">
                                <input class="form-control" type="text" id="headline" name="headline" />
                            </div>
                            <div class="form-group">
                                <div class="fileUpload btn btn-default">
                                    <span>Upload article image</span>
                                    <input type='file' id="imgInp" name="imgInp" class="upload" />
                                </div>
                            </div>
                            <button  type="submit" name="submitReport" id="submitReport">SUBMIT REPORT</button>
                        </form>
</asp:Content>

这是我的TestPageLOAD.aspx.vb代码Page_Load事件

 Dim nvc As NameValueCollection = Request.Form()
    lblHeadline.text = nvc("headline")
    Dim MyFileToUpload As String
    MyFileToUpload = nvc("imgInp")
    Dim FolderPath As String
    Dim FolderPathDOC As String
    FolderPath = "~/pics/"
    If MyFileToUpload.HasFile Then
        Dim strFileName As String
        Dim Extention As String = System.IO.Path.GetFileName(MyFileToUpload.PostedFile.FileName)
        Dim NoExtention As String = System.IO.Path.GetFileNameWithoutExtension(MyFileToUpload.PostedFile.FileName)
        strFileName = NoExtention + "_logo" + Extention.Substring(Extention.LastIndexOf("."))
        Dim filePath As [String] = Server.MapPath(FolderPath & strFileName)
        MyFileToUpload.SaveAs(filePath)
    End If

现在这段代码可以很好地填充或保存TestPageLOAD.aspx.vb上的数据,但是我不能在这个LOAD页面上上传图像。有别的办法吗?我不想将TestPage上的控件更改为ASP.net控件。aspx,因为它需要保持纯HTML。但是现在上传图片是我的问题了.....

VB.net或c#代码都可以

从NameValueCollection上传图像到服务器

找到这段代码,它完成了最后的工作。

<form action="TestPageLOAD.aspx" method="post" enctype="multipart/form-data">
    <input type="file" name="imgInp" />
</form>

TestPageLOAD.aspx.cs上的Page_Load事件

if(Request.Files["imgInp"] != null)
{
    HttpPostedFile MyFile = Request.Files["imgInp"];
    //Setting location to upload files
    string TargetLocation = Server.MapPath("~/pics/");
    try
    {
        if (MyFile.ContentLength > 0)
            {
                //Determining file name. You can format it as you wish.
                string FileName = MyFile.FileName;
                //Determining file size.
                int FileSize = MyFile.ContentLength;
                //Creating a byte array corresponding to file size.
                byte[] FileByteArray = new byte[FileSize];
                //Posted file is being pushed into byte array.
                MyFile.InputStream.Read(FileByteArray, 0, FileSize);
                //Uploading properly formatted file to server.
                MyFile.SaveAs(TargetLocation + FileName);
            }
        }
     catch(Exception BlueScreen)
     {
         //Handle errors
     }
}
在ASP.net中上传文件而不使用FileUpload服务器控件