私はWebサービス経由でSQLのvarbinary(max)フィールドに書き込むクライアントサービスを持っています。生のバイトからxlsxを書き込むと壊れた
次に、www経由でダウンロードするウェブページのレスポンスを使用してこれを書き込みます。 これは、xlsxファイル以外のすべてに対してうまくいきます。
私はレスポンスを使わずにテストしましたが、私は同じ問題があります。
Excelを開く
は、「我々はいくつかの内容に問題が検出されました..」と言う が続いクライアントアプリは経由で読み込む「Excelはなど...修理および削除することで、ファイルを開くことができました」開こう:
Dim objFileStream As IO.FileStream = New IO.FileStream(fileItem, FileMode.Open, FileAccess.Read)
Dim len As Integer = objFileStream.Length
Dim myByteArray(len) As Byte
objFileStream.Read(myByteArray, 0, len)
objFileStream.Close()
次に、Webサービス経由でmyByteArrayを保存します。
クライアントの書き込みエンティティフレームワークとDBから抽出して書き込みます。
System.IO.File.WriteAllBytes(filePath1, output)
は、私は、ファイルを書き込むためにさまざまな方法を試してみたが、私は一貫して、この破損メッセージが表示されます。
アイデア?
編集:
私はWebサービス/デシベルの送信/ストレージなどを削除した場合、次のように私は問題を絞り込むことができます。
- メソッド読み: - 即時書き込み
Dim objFileStream As IO.FileStream = New IO.FileStream(fileItem, FileMode.Open, FileAccess.Read)
Dim len As Integer = objFileStream.Length
Dim myByteArray(len) As Byte
objFileStream.Read(myByteArray, 0, len)
objFileStream.Close()
を:
System.IO.File.WriteAllBytes("c:\test.xlsx", myByteArray)
test.xlsxにはまだ問題があります。
送信しているヘッダーは、正確なExcelファイル形式と一致していますか? xls vs xlsx vs xlsbなど保存されたバージョンが壊れていないと確信していますか? –
私はヘッダーや操作を使用していません。私は単にバイト配列を読み込み、varbinaryフィールドに保存して書き出します。標準xlsの場合、問題なく動作します...そしてpdfsとhtmlファイル。しかしxlsxは私に腐敗のメッセージを与えます –
"私はwwwを介してダウンロードするウェブページ上の応答を介してこれを書きます。 - あなたはどんなコンテンツタイプのヘッダも送らないのですか?代わりに、サーバー上のファイルにコンテンツを書き込む場合、そのファイルはオープン可能ですか? –