0

だから私はpdfファイルをrestapiにアップロードしようとしています。何らかの理由で、アプリケーションが PC 上のファイルにアクセスできません。

アップロードに使用するコード:

public void Upload(string token, string FileName, string FileLocation, string Name, int TypeId, int AddressId, string CompanyName, string StreetNr, string Zip, string City, string CountryCode, string CustomFieldName, string CustomFieldValue)
            {
                var client = new HttpClient();
                client.BaseAddress = _API.baseAddress;
                //upload a new form
                client.DefaultRequestHeaders.Date = DateTime.Now;
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(token);

                using (var multiPartContent = new MultipartFormDataContent()) 
                {
                    //get te bytes from a file
                    byte[] pdfData;
                    using (var pdf = new FileStream(@FileLocation, FileMode.Open))//Here i get the error.
                    {
                        pdfData = new byte[pdf.Length];
                        pdf.Read(pdfData, 0, (int)pdf.Length);
                    }
                    var fileContent = new ByteArrayContent(pdfData);
                    fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        FileName = FileName + ".pdf"
                    };

                    //add the bytes to the multipart message
                    multiPartContent.Add(fileContent);

                    //make a json message
                    var json = new FormRest
                    {
                        Name = Name,
                        TypeId = TypeId,
                        AddressId = AddressId,
                        CompanyName = CompanyName,
                        StreetNr = StreetNr,
                        Zip = Zip,
                        City = City,
                        CountryCode = CountryCode,
                        CustomFields = new List<CustomFieldRest>
                            {
                                new CustomFieldRest {Name = CustomFieldName, Value = CustomFieldValue}
                            }
                    };
                    var Content = new JsonContent(json);

                    //add the json message to the multipart message
                    multiPartContent.Add(Content);

                    var result = client.PostAsync("forms", multiPartContent).Result;
                }

            }
        }

編集:

現在、ローカルファイルで機能しているようです。問題は、ネットワーク共有からファイルをアップロードする必要があることです。アプリケーションがドメイン共有にあるファイルにアクセスできるようにするにはどうすればよいですか?

4

2 に答える 2

1

がファイルが置かれているフォルダーへのパスである場合FileLocation、コードは次のようになります。

using (var pdf = new FileStream(Path.Combine(FileLocation, FileName + ".pdf"), FileMode.Open))
{
  pdfData = new byte[pdf.Length];
  pdf.Read(pdfData, 0, (int)pdf.Length);
}

おそらく代わりにFile.ReadAllBytesを使用します。

var pdfData = File.ReadAllBytes(Path.Combine(FileLocation, FileName + ".pdf"));
于 2013-06-27T11:47:35.087 に答える