【发布时间】:2020-09-23 10:16:28
【问题描述】:
我正在使用 Salesforce v49.0。我编写了将文件(txt 文件)从我的目录上传到 salesforce 的代码。 我在我的 salesforce 帐户中创建了一个文件夹。 我在尝试上传时收到错误请求。 请帮助找到解决方案或建议任何其他上传文件的方法。
我的代码
string oauthToken = (string)loginResponse["access_token"];
string serviceUrl = (string)loginResponse["instance_url"];
var doc = new sfdcDocument();
doc.Name = "DocumentbyDuke";
doc.FolderId = "05He0000RE00CcKDERTD";
doc.Type = "txt";
doc.Keywords = "123";
doc.Description = "123";
string boundary = "----" + DateTime.Now.Ticks.ToString("x");
var uri = serviceUrl + "/services/data/v49.0/sobjects/Document/";
var req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri);
req.Headers.Add("Authorization: OAuth " + oauthToken);
req.ContentType = "multipart/form-data; boundary=" + boundary;
req.Method = "POST";
var os = req.GetRequestStream();
// Add header for JSON part
string body = "";
body += "\r\n--" + boundary + "\r\n"; ;
body += "Content-Disposition: form-data; name='entity_document'\r\n";
body += "Content-Type: application/json\r\n\r\n";
// Add document object data in JSON
body += JsonConvert.SerializeObject(doc);
// Add header for binary part
body += "\r\n--" + boundary + "\r\n"; ;
body += "Content-Disposition: form-data; name='Body'; filename='1.txt'\r\n";
body += "Content-Type: binary/octet-stream\r\n\r\n";
// Add header data to request
byte[] data = System.Text.Encoding.ASCII.GetBytes(body);
os.Write(data, 0, data.Length);
// Add file to reqeust
FileStream fileStream = new FileStream(@"C:\Users\AprilFile.txt", FileMode.Open, FileAccess.ReadWrite);
byte[] buffer = new byte[4096];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
os.Write(buffer, 0, bytesRead);
}
fileStream.Close();
// Add trailer
byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
os.Write(trailer, 0, trailer.Length);
os.Close();
// Do the post and get the response.
WebResponse resp;
try
{
resp = req.GetResponse();
}
catch (WebException ex)
{
resp = ex.Response;
}
//if (resp == null) return null;
var sr = new System.IO.StreamReader(resp.GetResponseStream());
【问题讨论】:
-
我运行了来自Fiddler 的代码和捕获的响应。它显示 87 [{"message":"Folder ID: id value of wrong type: *08He0000000sqweER","errorCode":"FIELD_INTEGRITY_EXCEPTION","fields":["FolderId"]}] 0
标签: c# salesforce httprequest salesforce-lightning