Javascript 如何使用子目录的扩展数据上载文件?

Javascript 如何使用子目录的扩展数据上载文件?,javascript,c#,asp.net-mvc,asp.net-web-api,Javascript,C#,Asp.net Mvc,Asp.net Web Api,我上传了一个表单提交网页上的多个文件。表单提交是通过breezejs处理表单数据的,但需要根据提交返回的唯一标识符将文件上载到uploads目录中的特定子目录 在初始化MultipartFormDataStreamProvider时,我不知道如何及时从Post请求中获取子目录信息,以便将其应用于path变量 我的ApiController用于上传: public class UploadingController : ApiController { private const strin

我上传了一个表单提交网页上的多个文件。表单提交是通过breezejs处理表单数据的,但需要根据提交返回的唯一标识符将文件上载到uploads目录中的特定子目录

在初始化
MultipartFormDataStreamProvider
时,我不知道如何及时从Post请求中获取子目录信息,以便将其应用于path变量

我的
ApiController
用于上传:

public class UploadingController : ApiController
{
    private const string FolderName = "uploads";

    [HttpPost]
    public Task<IEnumerable<FileDescription>> Post()
    {
        if (!Request.Content.IsMimeMultipartContent())
            throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted"));

        var streamProvider = new CustomMultipartFormDataStreamProvider(HttpContext.Current.Server.MapPath("~/" + FolderName));

        var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith(t =>
        {
            if (t.IsFaulted || t.IsCanceled)
                throw new HttpResponseException(HttpStatusCode.InternalServerError);

            var fileInfo = streamProvider.FileData.Select(i =>
            {
                var info = new FileInfo(i.LocalFileName);
                var rootUrl = Request.RequestUri.AbsoluteUri.Replace(Request.RequestUri.AbsolutePath, String.Empty);

                return new FileDescription(info.Name, string.Format("{0}/{1}/{2}", rootUrl, FolderName, info.Name), info.Length / 1024);
            });
            return fileInfo;
        });
        return task;
    }
}
My js服务使用以下函数调用WebAPI:

var uploadFiles = function (files, subDirectory) {
    var data = new FormData();
    data.append('subDirectory', subDirectory);
    for (var i = 0; i < files().length; i++)
        data.append('items[]', files()[i]);

    $.ajax({
        type: 'POST',
        url: config.contextPath + 'api/Uploading',
        contentType: false,
        processData: false,
        data: data,
        success: function (res) {
            $.each(res, function (j, item) {
                logger.info('File uploaded: ' + item.name + ' to path: ' + item.path);
            });
        }
    });
};
var uploadFiles=函数(文件,子目录){
var data=new FormData();
data.append('子目录',子目录);
对于(var i=0;i
data.append('subDirectory',subDirectory)
应该允许我访问它,作为
FormData
NameValueCollection
的一部分。但是,在实例化
StreamProvider
之前,我无法访问此集合,这需要一个目录路径来实例化

如何将此子目录传递给
StreamProvider
,以创建这些子目录

var uploadFiles = function (files, subDirectory) {
    var data = new FormData();
    data.append('subDirectory', subDirectory);
    for (var i = 0; i < files().length; i++)
        data.append('items[]', files()[i]);

    $.ajax({
        type: 'POST',
        url: config.contextPath + 'api/Uploading',
        contentType: false,
        processData: false,
        data: data,
        success: function (res) {
            $.each(res, function (j, item) {
                logger.info('File uploaded: ' + item.name + ' to path: ' + item.path);
            });
        }
    });
};