将文件转换为字节数组是将ANY文件格式保存到磁盘或数据库var二进制列的最佳方法吗?
因此,如果有人想保存.gif或.doc/.docx或.pdf文件,我可以将其转换为字节数UFT8并将其作为字节流保存到数据库中吗?
我曾经用来MultipartFormDataStreamProvider处理多部分请求.
由于我希望将上传的文件存储在内存中而不是磁盘文件中,因此我更改了要使用的代码MultipartMemoryStreamProvider.文件加载似乎工作正常,但我不再能够访问通过provider.FormData下面提供的其他表单值MultipartFormDataStreamProvider.有人能告诉我怎么做吗?
Fiddler捕获的原始请求:
POST http://myserver.com/QCCSvcHost/MIME/RealtimeTrans/ HTTP/1.1
Content-Type: multipart/form-data; boundary="XbCY"
Host: na-w-lxu3
Content-Length: 1470
Expect: 100-continue
Connection: Keep-Alive
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=PayloadType
X12_270_Request_005010X279A1
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=ProcessingMode
RealTime
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=PayloadID
e51d4fae-7dec-11d0-a765-00a0c91e6fa6
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=TimeStamp
2007-08-30T10:20:34Z
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=SenderID
HospitalA
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=ReceiverID
PayerB
--XbCY
Content-Type: text/plain; charset=utf-8
Content-Disposition: form-data; name=CORERuleVersion …Run Code Online (Sandbox Code Playgroud) 我需要上传文件发送额外的参数.
我在stackoverflow中找到了以下帖子:带有额外参数的Webapi ajax formdata上传
它描述了如何使用MultipartFormDataStreamProvider并将数据保存到文件服务器.我不需要将文件保存到服务器,而是保存到DB.我已经使用MultipartMemoryStreamProvider处理代码,但它不使用额外的参数.
你能告诉我如何在webapi中处理额外的参数吗?
例如,如果我添加文件并测试参数:
data.append("myParameter", "test");
Run Code Online (Sandbox Code Playgroud)
这是我的webapi处理fileupload而没有额外的参数:
if (Request.Content.IsMimeMultipartContent())
{
var streamProvider = new MultipartMemoryStreamProvider();
var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<IEnumerable<FileModel>>(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
throw new HttpResponseException(HttpStatusCode.InternalServerError);
}
_fleDataService = new FileDataBLL();
FileData fle;
var fleInfo = streamProvider.Contents.Select(i => {
fle = new FileData();
fle.FileName = i.Headers.ContentDisposition.FileName;
var contentTest = i.ReadAsByteArrayAsync();
contentTest.Wait();
if (contentTest.Result != null)
{
fle.FileContent = contentTest.Result;
}
// get extra parameters here ??????
_fleDataService.Save(fle);
return new FileModel(i.Headers.ContentDisposition.FileName, 1024); //todo
}); …Run Code Online (Sandbox Code Playgroud) 我正在使用jQuery ajax上传文件,但想在webapi方法上添加一些参数,这里是:
var data = new FormData();
data.append("file", $("#file")[0].files[0]);
data.append("myParameter", "test"); // with this param i get 404
$.ajax({
url: '/api/my/upload/',
data: data,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function (data) {
console.log(data);
}
});
Run Code Online (Sandbox Code Playgroud)
Webapi控制器:
public class MyController : ApiController
{
public string Upload(string myParameter)
{
return System.Web.HttpContext.Current.Request.Files.Count.ToString() + " / " + myParameter;
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有myParameter一切正常,但是当我在formdata和api方法中包含myParameter时,我得到404,有没有机会让它工作?