0

現在、ASP FileUpload コントロールを使用してドキュメントを SharePoint 2010 ドキュメント ライブラリにアップロードしています。

このプロセスは、Office 2010 ドキュメントに適合するまで、OFFice 92-2003 ドキュメント、TXT、RTF、さらには PDF に対しても正常に機能します。

問題は、ファイルを正常にアップロードできることです。ファイルは SharePoint サーバーにあります。ただし、ローカルにダウンロードした後、ファイルを開くと、ファイルに読み取り不能なコンテンツ (または破損) があり、読み取るには回復する必要があることが示されます。回復後、正常に開きます。 XLSXファイル

Office 2010 のドキュメント アップロード ストリームが Office 2003 とは少し異なるという記事をどこかで読んだことを思い出しましたが、正確には覚えていません。

これは私のコードです:

ASPX

<asp:FileUpload ID="UploadControl" runat="server" onchange="FileChooseAction()" />

コードビハインド

Dim byt As Byte()
ReDim byt(UploadControl.PostedFile.InputStream.Length)
UploadControl.PostedFile.InputStream.Seek(0, SeekOrigin.Begin)
UploadControl.PostedFile.InputStream.Read(byt, 0, UploadControl.PostedFile.InputStream.Length)
UploadControl.PostedFile.InputStream.Close()
4

1 に答える 1

0

Byte 配列からちょうど 1 バイト余分にあることが原因であることがわかりました。正しいコードは

Dim byt As Byte()
ReDim byt(UploadControl.PostedFile.InputStream.Length - 1)
UploadControl.PostedFile.InputStream.Seek(0, SeekOrigin.Begin)
UploadControl.PostedFile.InputStream.Read(byt, 0, UploadControl.PostedFile.InputStream.Length - 1)
UploadControl.PostedFile.InputStream.Close()

Office 2010 ドキュメントだけがこの余分なバイトで問題を起こすようです (仕様によるものですか?)。PDF、Office 97-2003 などは対象外です。

于 2013-07-22T03:03:05.517 に答える