如何使用 Asp.net Web Api 项目上传文件?
How to upload file with Asp.net Web Api project?
我有一个 Web API 项目要从移动应用程序中使用,我正在尝试制作一个文件上传控制器。 C# 中的资源很少,我找不到任何对 VB.NET.
有用的东西
我尝试将下面的代码从 C# 转换为 VB.NET,但显示 "Move is not a member of 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
该错误消息意味着编译器认为您正在尝试从 MultiPartFileData
class 调用方法。 MultiPartFileData 类型的变量是在 For Each 循环中初始化的名为 file(注意小写)的变量。
相反,您想从 System.IO.File class(注意大写)调用 Move 方法。
VB.NET 服务(总是 运行 在后台查找您键入时捕获的错误)不区分大小写,因此,对于它来说,这两个名称是相同的,这里会出现您在输入时发出的错误对该行进行编码。
最好的解决方案是当您计划使用 class System.IO.File 时,避免为您的变量使用 file 这样的名称。否则你可以简单地以这种方式添加完整的限定方法的名称
System.IO.File.Move(localFileName, filePath)
我有一个 Web API 项目要从移动应用程序中使用,我正在尝试制作一个文件上传控制器。 C# 中的资源很少,我找不到任何对 VB.NET.
有用的东西我尝试将下面的代码从 C# 转换为 VB.NET,但显示 "Move is not a member of 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
该错误消息意味着编译器认为您正在尝试从 MultiPartFileData
class 调用方法。 MultiPartFileData 类型的变量是在 For Each 循环中初始化的名为 file(注意小写)的变量。
相反,您想从 System.IO.File class(注意大写)调用 Move 方法。
VB.NET 服务(总是 运行 在后台查找您键入时捕获的错误)不区分大小写,因此,对于它来说,这两个名称是相同的,这里会出现您在输入时发出的错误对该行进行编码。
最好的解决方案是当您计划使用 class System.IO.File 时,避免为您的变量使用 file 这样的名称。否则你可以简单地以这种方式添加完整的限定方法的名称
System.IO.File.Move(localFileName, filePath)