我有一个简单的应用程序,我正在做一个文件类型输入到WCF服务的表单发布。我试图将表单文件上传到Azure blob,然后通过点击相应的blob url进行下载。上传和下载流到Azure Blob
现在发生了什么是我正在上传文件到Azure,但是当我下载它时,文件不包含内容。例如,如果我上传something.zip或something.gif,我可以从url下载它,但它们都不会包含任何内容。
我读过,这可能是因为流的位置未设置为0.它不会让我设置下面的流“流”的位置,所以我将它复制到一个memoryStream。可悲的是,这并没有解决问题。
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.Wrapped,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "Upload")]
public string upload(Stream stream)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(exerciseContainer);
CloudBlob blob = container.GetBlobReference("myblob");
Stream s = new MemoryStream();
stream.CopyTo(s);
s.Seek(0, SeekOrigin.Begin);
blob.UploadFromStream(s);
return "uploaded";
}
而且我知道该文件越来越通过小提琴手/休息的服务,我已经成功地上传和下载通过硬编码的文件在文件中是这样的:
using (var fileStream = System.IO.File.OpenRead(@"C:\file.zip"))
{
blob.UploadFromStream(fileStream);
}
编辑: HTML
<form action='http://127.0.0.1:81/service.svc/Upload' method="post">
<input type="file" name="file" id="btnUpload" value="Upload" />
<input type="submit" value="Submit" class="btnExercise" id="btnSubmitExercise"/>
</form>
”流的位置未设置为0“。那解决了我的问题,谢谢+1 –