Как загрузить файл с Asp. net проектом Web Api? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть проект веб-API для мобильных приложений, и я пытался создать контроллер загрузки файлов. В C# есть немного ресурсов, и я не нахожу ничего полезного для VB. NET.

Я попробовал этот код ниже, преобразовав из c# в VB. NET, но говорит: "Переместить не является членом MultiPartFileData ".

Imports System
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq
Imports System.Net
Imports System.Net.Http
Imports System.Threading.Tasks
Imports System.Web
Imports System.Web.Http

Namespace HelloWorld.Controller
    Public Class FileUploadingController
        Inherits ApiController

        <HttpPost>
        <Route("api/FileUploading/UploadFile")>
        Public Async Function UploadFile() As Task(Of String)
            Dim ctx = HttpContext.Current
            Dim root = ctx.Server.MapPath("~/App_Data")
            Dim provider = New MultipartFormDataStreamProvider(root)

            Try
                Await Request.Content.ReadAsMultipartAsync(provider)

                For Each file In provider.FileData
                    Dim name = file.Headers.ContentDisposition.FileName
                    name = name.Trim(""""c)
                    Dim localFileName = file.LocalFileName
                    Dim filePath = Path.Combine(root, name)
                    File.Move(localFileName, filePath)
                Next

            Catch e As Exception
                Return $"Error: {e.Message}"
            End Try

            Return "File uploaded!"
        End Function
    End Class
End Namespace

1 Ответ

1 голос
/ 27 апреля 2020

Это сообщение об ошибке означает, что компилятор думает, что вы пытаетесь вызвать метод из класса MultiPartFileData. Переменная типа MultiPartFileData - это переменная с именем file (обратите внимание на нижний регистр), инициализированная в For Each l oop.

Вместо этого вы хотите вызвать метод Move из System.IO. Класс .ile (обратите внимание на верхний регистр).

VB. NET Службы (всегда работающие в фоновом режиме с целью обнаружения ошибок при вводе) нечувствительны к регистру, поэтому для них два имени одинаковы и здесь возникает ошибка, возникающая при кодировании этой строки.

Лучшее решение - избегать имен, таких как file для ваших переменных, когда вы планируете использовать класс System.IO.File. В противном случае вы можете просто добавить полное имя метода следующим образом:

System.IO.File.Move(localFileName, filePath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...