2
업로드 된 XML 파일을 파일 대신 문자열로 읽는 데 문제가 있습니다.멀티 파트 파일 업로드에서 메모리 내용 읽기
제 문제는 스트림 (var stream = part.ContentReadStream
)에 액세스하려고 시도 할 때 닫힙니다. 닫힌 파일 스트림에 액세스하고 있다고 느낍니다. MultipartFormDataStreamProvider를 잘못 사용하고 있습니까? 파일 크기는 몇 킬로바이트에 불과하므로 문제가되지 않습니다.
[WebInvoke(Method = "POST", UriTemplate = "{importFile}")]
public HttpResponseMessage Upload(string importFile, HttpRequestMessage request)
{
if (!request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
// Create a stream provider for setting up output streams
MultipartFormDataStreamProvider streamProvider = new MultipartFormDataStreamProvider();
// Read the MIME multipart content using the stream provider we just created.
var task = request.Content.ReadAsMultipartAsync(streamProvider);
task.Wait();
IEnumerable<HttpContent> bodyparts = task.Result;
string submitter;
if (!bodyparts.TryGetFormFieldValue("submitter", out submitter))
{
submitter = "unknown";
}
// Get list of local file names from stream provider
IDictionary<string, string> bodyPartFileNames = streamProvider.BodyPartFileNames;
var parser = this.parserFactoryFactory.CreateParser();
foreach (var part in bodyparts)
{
using (var stream = part.ContentReadStream)
{
using (var streamReader = new StreamReader(stream))
{
string content = streamReader.ReadToEnd();
var results = parser.Parse(content);
}
}
}
return new HttpResponseMessage(HttpStatusCode.Accepted);
}
이
은 내 게시물<h3>Data import test</h3>
<form action="/api/data/Upload" enctype="multipart/form-data" method="POST">
<input type="file" name="importFile"/>
<input type="submit" value="Upload"/>
</form>
이 경우에도 컴파일이 수행됩니까? task.Result는 MultipartMemoryStreamProvider입니다. IEnumerable에 캐스팅하는 방법은입니까? 나는 그것이 과제가되어야한다고 생각한다. 결과. 내용 –
질문이 답변 된 지 오래되었다. 불행히도 지금은 확인할 수 없습니다. 여전히 유효한 솔루션입니다. – Tx3
'this.parserFactoryFactory.CreateParser();는 무엇을하고 있습니까? – StuperUser