none
如何上传客户端的文件到服务器端? RRS feed

  • 问题

  • Private Sub myUpload(ByVal fileName As String, ByVal uploadUrl As String)
            Dim requestStream As Stream = Nothing
            Dim fileStream As FileStream = Nothing
            Dim uploadResponse As FtpWebResponse = Nothing
            Try
                Dim uploadRequest As FtpWebRequest = WebRequest.Create(uploadUrl)

                uploadRequest.Method = WebRequestMethods.Ftp.UploadFileWithUniqueName

                ' UploadFile is not supported through an Http proxy
                ' so we disable the proxy for this request.
                uploadRequest.Proxy = Nothing

                requestStream = uploadRequest.GetRequestStream()
                fileStream = File.Open(fileName, FileMode.Open)

                Dim buffer(1024) As Byte
                Dim bytesRead As Integer
                While True
                    bytesRead = fileStream.Read(buffer, 0, buffer.Length)
                    If bytesRead = 0 Then
                        Exit While
                    End If
                    requestStream.Write(buffer, 0, bytesRead)
                End While

                ' The request stream must be closed before getting the response.
                requestStream.Close()

                uploadResponse = uploadRequest.GetResponse()
                lblMsg.Text = "Upload complete."
            Catch ex As UriFormatException
                lblMsg.Text = ex.Message
            Catch ex As IOException
                lblMsg.Text = ex.Message
            Catch ex As WebException
                lblMsg.Text = ex.Message
            Finally
                If uploadResponse IsNot Nothing Then
                    uploadResponse.Close()
                End If
                If fileStream IsNot Nothing Then
                    fileStream.Close()
                End If
                If requestStream IsNot Nothing Then
                    requestStream.Close()
                End If
            End Try
        End Sub

        Protected Sub btnFtp_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFtp.Click
            myUpload("C:\a.txt", "ftp://192.168.5.1/ch101/")
        End Sub



    这段代码只能商船服务器端的文件.

    2009年3月18日 4:23

答案

  • 请使用FileUpload控件

    http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.fileupload.saveas.aspx


    http://msdn.microsoft.com/zh-cn/library/ms227669.aspx

    如何:使用 FileUpload Web 服务器控件上载文件

    孟宪会
    2009年3月18日 4:59
    版主
  • 上载大文件时,可使用 元素的 maxRequestLength 属性来增加文件大小的最大允许值,例如:

        <configuration>
           <system.web>
               <httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
           </system.web>
        </configuration>
    其中:maxRequestLength:指示 ASP.NET 支持的HTTP方式上载的最大字节数。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。executionTimeout:指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。在当文件超出指定的大小时,如果浏览器中会产生 DNS 错误或者出现服务不可得到的情况,也请修改以上的配置,把配置数加大。

    另外,上载大文件时,还可能会收到以下错误信息:

        aspnet_wp.exe (PID: 1520) 被回收,因为内存消耗超过了 460 MB(可用 RAM 的百分之 60)。
    如果遇到此错误信息,请增加应用程序的 Web.config 文件的 元素中 memoryLimit 属性的值。例如:

        <configuration>
           <system.web>
              <processModel memoryLimit="80"/>
           </system.web>
        </configuration>


    由于是http方式,不适合上传大文件。一般的网站都要求不超过10M

    孟宪会
    2009年3月19日 1:47
    版主
  • 你可以写个客户端的程序,实现ftp功能,
    FtpWebRequest 类

    http://msdn.microsoft.com/zh-cn/library/system.net.ftpwebrequest.aspx

    比在web上方便上传大文件


    孟宪会
    2009年3月19日 9:27
    版主

全部回复

  • 请使用FileUpload控件

    http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.fileupload.saveas.aspx


    http://msdn.microsoft.com/zh-cn/library/ms227669.aspx

    如何:使用 FileUpload Web 服务器控件上载文件

    孟宪会
    2009年3月18日 4:59
    版主
  •  是不是上传不了大文件?多人同时上船大文件(例如100MB)?
    2009年3月19日 1:35
  • 上载大文件时,可使用 元素的 maxRequestLength 属性来增加文件大小的最大允许值,例如:

        <configuration>
           <system.web>
               <httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
           </system.web>
        </configuration>
    其中:maxRequestLength:指示 ASP.NET 支持的HTTP方式上载的最大字节数。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。executionTimeout:指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。在当文件超出指定的大小时,如果浏览器中会产生 DNS 错误或者出现服务不可得到的情况,也请修改以上的配置,把配置数加大。

    另外,上载大文件时,还可能会收到以下错误信息:

        aspnet_wp.exe (PID: 1520) 被回收,因为内存消耗超过了 460 MB(可用 RAM 的百分之 60)。
    如果遇到此错误信息,请增加应用程序的 Web.config 文件的 元素中 memoryLimit 属性的值。例如:

        <configuration>
           <system.web>
              <processModel memoryLimit="80"/>
           </system.web>
        </configuration>


    由于是http方式,不适合上传大文件。一般的网站都要求不超过10M

    孟宪会
    2009年3月19日 1:47
    版主
  • 谢谢!我做的是个局域网的上传程序,安全和性能可以放得很宽,有没有别的好办法?就像用ftp一样,谢谢!!!
    2009年3月19日 2:11
  • 你可以写个客户端的程序,实现ftp功能,
    FtpWebRequest 类

    http://msdn.microsoft.com/zh-cn/library/system.net.ftpwebrequest.aspx

    比在web上方便上传大文件


    孟宪会
    2009年3月19日 9:27
    版主