Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Office365 Onedrive for business中的Microsoft Graph API文件上载_Office365_Officedev - Fatal编程技术网

Office365 Onedrive for business中的Microsoft Graph API文件上载

Office365 Onedrive for business中的Microsoft Graph API文件上载,office365,officedev,Office365,Officedev,我正在使用下面的Microsoft Graph API代码将文件上载到OneDrive,用于当前登录用户的业务。 代码可以很好地上传notepad.txt文件,我可以按原样正确打开文件内容。 但当它上载.docx(word文档)时,打开尝试时会抛出错误,因为文件已损坏。 我错过了什么? 使用的参考- 代码: 考虑到你是c语言的,我认为你不需要先对内容进行base64解码。您是否尝试过删除解码部分,只对请求进行编码?下面的代码对我非常有效。 代码 感谢您的及时回复。我尝试了下面的代码,但没有一个

我正在使用下面的Microsoft Graph API代码将文件上载到OneDrive,用于当前登录用户的业务。 代码可以很好地上传notepad.txt文件,我可以按原样正确打开文件内容。 但当它上载.docx(word文档)时,打开尝试时会抛出错误,因为文件已损坏。 我错过了什么? 使用的参考-

代码:


考虑到你是c语言的,我认为你不需要先对内容进行base64解码。您是否尝试过删除解码部分,只对请求进行编码?

下面的代码对我非常有效。 代码


感谢您的及时回复。我尝试了下面的代码,但没有一个工作//request.Content=newstringcontent((Convert.ToBase64String(filebytes)),System.Text.Encoding.ASCII,“Text/plain”)//request.Content=newstreamcontent(filestream,filesize)//request.Content=newbytearraycontent(filebytes,0,filesize-1);不确定Office MIME类型会出现什么问题。我正在从文件上载控制获取文件。我正在直接尝试使用文件字节或流来推送文件内容。client.PutAsync(“+filename+”/content),新的StreamContent(filestream)),以及由此产生的错误请求。HI Ashish,我尝试了上面的代码来上载word文档,但仍然收到错误消息,说文件已损坏。您能告诉我filebytes变量中有什么值吗?谢谢
byte[] filebytes= fileuploadControl.FileBytes;
using (var client = new HttpClient())
{
using (var request = new HttpRequestMessage(HttpMethod.Put, "https://graph.microsoft.com/v1.0/me/drive/root/children/" + filename + "/content"))
{
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
request.Headers.Add("Accept", "application/json;odata.metadata=verbose");
request.Content = new StringContent(DecodeFrom64(Convert.ToBase64String(filebytes)),System.Text.Encoding.ASCII, "text/plain");
using (HttpResponseMessage response = await client.SendAsync(request))
{
     if (response.IsSuccessStatusCode)
                        {
                            lblFileUpload.Text = "File uploaded successfully";
                        }
                    }
                }
            }
static public string DecodeFrom64(string encodedData)
    {
        byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData);
        string returnValue = System.Text.ASCIIEncoding.ASCII.GetString(encodedDataAsBytes);
        return returnValue;
    }
var fileUrl = new Uri("https://graph.microsoft.com/v1.0/me/drive/root/children/" + filename + "/content");
                    var request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(fileUrl);
                    request.Method = "PUT";
                    request.ContentLength = filebytes.Length;
                    request.AllowWriteStreamBuffering = true;
                    //request.Accept = "application/json;odata=verbose";
                    request.ContentType = "text/plain";
                    request.Headers.Add("Authorization", "Bearer " + accessToken);
                    System.IO.Stream stream = request.GetRequestStream();
                    //filestream.CopyTo(stream);
                    stream.Write(filebytes, 0, filebytes.Length);
                    stream.Close();

                    System.Net.WebResponse response = request.GetResponse();