我可以用multipart/form-data
上传一个文件,但是我找不到任何有关multipart/form-data
上传文件夹的教程。 这是我的代码上传文件:我可以使用multipart/form-data上传文件夹吗?
HTML:
<form name="form1" method="post" enctype="multipart/form-data" action="api/upload">
<fieldset>
<legend>File Upload Example</legend>
<div>
<label for="caption">Image Caption</label>
<input name="caption" type="text" />
</div>
<div>
<label for="image1">Image File</label>
<input name="image1" type="file" />
</div>
<div>
<input type="submit" value="Submit" />
</div>
</fieldset>
</form>
控制器:
public class UploadController : ApiController
{
[AcceptVerbs("GET", "POST")]
public async Task<HttpResponseMessage> PostFile()
{
// Check if the request contains multipart/form-data.
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
string root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
try
{
StringBuilder sb = new StringBuilder(); // Holds the response body
// Read the form data and return an async task.
await Request.Content.ReadAsMultipartAsync(provider);
// This illustrates how to get the file names for uploaded files.
foreach (var file in provider.FileData)
{
var originalFile = file.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"'); ;
FileInfo fileInfo = new FileInfo(file.LocalFileName);
fileInfo.CopyTo(Path.Combine(root, originalFile), true);
sb.Append(string.Format("Uploaded file: {0} ({1} bytes)\n", originalFile, fileInfo.Length));
fileInfo.Delete();
}
return new HttpResponseMessage()
{
Content = new StringContent(sb.ToString())
};
}
catch (System.Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}
}
我可以使用multipart/form-data
上传文件夹?
文件上传基于RFC 1867(https://www.ietf.org/rfc/rfc1867.txt),没有提到'文件夹'这是一个模糊的概念。所以你可以上传一个文件列表,就是这样 –
在用javascript上传每个文件之前,如何获取文件夹中的列表文件? –
这里有很好的解释:https://developer.mozilla.org/en/docs/Using_files_from_web_applications或者你使用'',或者你使用一个带有'event.datatransfer.files'的拖放区域https://developer.mozilla.org/en/docs/Web/API/DataTransfer/files –