1

我有以下内容,它上传没有错误,但图像始终为 0 字节。

Windows Phone App(在选择或拍照后调用):

private void AddImage(PhotoResult e)
    {
      if (e.TaskResult == TaskResult.OK)
      {
        string serviceUri = Globals.GreedURL + @"API/UploadPhoto/test5.jpg";
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(serviceUri);
        request.Method = "POST";
        request.BeginGetRequestStream(result =>
        {
          Stream requestStream = request.EndGetRequestStream(result);
          e.ChosenPhoto.CopyTo(requestStream);
          requestStream.Close();
          request.BeginGetResponse(result2 =>
          {
            try
            {
              HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result2);
              if (response.StatusCode == HttpStatusCode.Created)
              {
                this.Dispatcher.BeginInvoke(() =>
                {
                  MessageBox.Show("Upload completed.");
                });
              }
              else
              {
                this.Dispatcher.BeginInvoke(() =>
                {
                  MessageBox.Show("An error occured during uploading. Please try again later.");
                });
              }
            }
            catch
            {
              this.Dispatcher.BeginInvoke(() =>
              {
                MessageBox.Show("An error occured during uploading. Please try again later.");
              });
            }
            e.ChosenPhoto.Close();
          }, null);
        }, null);
}

这是 Web API:

 public class UploadPhotoController : ApiController
      {
        public HttpResponseMessage Post([FromUri]string filename)
        {
          var task = this.Request.Content.ReadAsStreamAsync();
          task.Wait();
          Stream requestStream = task.Result;

          // Retrieve storage account from connection string.
          CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);

          // Create the blob client.
          CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

          // Retrieve reference to a previously created container.
          CloudBlobContainer container = blobClient.GetContainerReference("profilepics");
          container.CreateIfNotExists();

          var permissions = container.GetPermissions();
          permissions.PublicAccess = BlobContainerPublicAccessType.Blob;
          container.SetPermissions(permissions);

          string uniqueBlobName = string.Format("test.jpg");

          CloudBlockBlob blob = container.GetBlockBlobReference(uniqueBlobName);
          blob.Properties.ContentType = "image\\jpeg";

          blob.UploadFromStream(task.Result);

          HttpResponseMessage response = new HttpResponseMessage();
          response.StatusCode = HttpStatusCode.Created;
          return response;
        }
}

有任何想法吗?任何帮助,将不胜感激。

4

0 回答 0