0

本番システムにバグがあります。ユーザーがExcel(.xlsx)ファイルを選択してソフトウェア内にアップロードすると、アプリケーションが例外をスローします。Attempted to read past the end of the stream. - at ICSharpCode.SharpZipLib.Zip.ZipHelperStream.ReadLEShort()

を使用してExcelDataReaderおり、SharpZipLibが0.65に更新されています。誰かアイデアがありますか?

SharpZipLibを使用するExcelDataReader抽出メソッド:zipFile = new ZipFile(filestream);で例外がスローされました。

ありがとう。

public bool Extract(Stream fileStream)

    {
        if (null == fileStream) return false;

        CleanFromTemp();

        NewTempPath();

        _isValid = true;

        ZipFile zipFile = null;

        try
        {
            zipFile = new ZipFile(fileStream);

            IEnumerator enumerator = zipFile.GetEnumerator();

            while (enumerator.MoveNext())
            {
                ZipEntry entry = (ZipEntry)enumerator.Current;

                ExtractZipEntry(zipFile, entry);
            }
        }
        catch (Exception ex)
        {
            _isValid = false;
            _exceptionMessage = ex.Message;
            Log.Trace(string.Format("{0} - {1}",ex.Message ,ex.StackTrace), this.GetType());

            CleanFromTemp();
        }
        finally
        {
            fileStream.Close();

            if (null != zipFile) zipFile.Close();
        }

        return _isValid ? CheckFolderTree() : false;
    }
4

1 に答える 1

0

これは、zip ファイルが ZIP 標準に従っていない場合に発生します。その xlsx ファイルには、解凍プログラムをスローしている何かがあります。

別の zip ライブラリを試して使用することができます (または、既存のライブラリ0.86 の更新が現在のビルドであることを確認します)。それを使用して、ファイルをストリームに解凍します。新しいzipライブラリを見つける代わりに、zipヘッダーを修正できたのと同じ問題を修正する必要がありました。

于 2012-09-17T19:24:18.567 に答える