Javascript 如何使用子目录的扩展数据上载文件?
我上传了一个表单提交网页上的多个文件。表单提交是通过breezejs处理表单数据的,但需要根据提交返回的唯一标识符将文件上载到uploads目录中的特定子目录 在初始化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
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);
});
}
});
};