0

asp.net mvc プロジェクト フォルダーから Excel ファイルを取得し、base64 文字列でエンコードする必要があります。

今私のコード:

 string base64 = String.Empty;
 var pathName = Server.MapPath("~/App_Data/ImportTemplate.xlsx");`
 byte[] docBytes = null;

using (StreamReader strm = new StreamReader(pathName, System.Text.Encoding.UTF8))
        {
            Stream s = strm.BaseStream;
            BinaryReader r = new BinaryReader(s);
            docBytes = r.ReadBytes(Convert.ToInt32(r.BaseStream.Length));
            base64 = Convert.ToBase64String(docBytes);
            r.Close();
            s.Close();
            strm.Close();
        }

これまでのところ、これは正しく機能しません。助言がありますか?

4

2 に答える 2

0

最も可能性の高い問題は、base64 データに、HTTP によって特別に解釈される「+」および「/」文字が含まれていることです。そのバイナリを、それらの文字に「-」と「_」を使用する base64 URL エンコーディングと呼ばれるものに変換する必要があります。http://api.adform.com/Services/Documentation/Samples/MediaPlanServiceSamples.htm#ImportMediaPlanの例は、これが事実であることを示しています。

変換方法については、https://stackoverflow.com/a/17032614/56778を参照してください。

于 2013-06-12T11:57:07.320 に答える
0

試すことができますか:

 byte[] docBytes = ReadFile(pathName);


 byte[] ReadFile(string sourcePath)
    {
        byte[] data = null;
        FileInfo fileInfo = new FileInfo(sourcePath);
        long numBytes = fileInfo .Length;
        FileStream fileStream = new FileStream(sourcePath, FileMode.Open, FileAccess.Read);
        BinaryReader br = new BinaryReader(fileStream);
        data = br.ReadBytes((int)numBytes);
        fileStream .Close();
        return data;
    }
于 2013-06-12T12:02:31.603 に答える