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