そのため、ユーザーが Excel ドキュメントを作成できるようにするプログラムのバグ修正を行っています。このドキュメントは、最初に zip 圧縮されてから顧客に提供されます。クライアントからの不満の 1 つは、zip ファイルはいつでもダウンロードできるものの、ユーザーが標準の Windows 圧縮ツールを使用して開く前に、アーカイブから Excel ファイルをコピー (または抽出) しなければならない場合があることです。標準の「ファイル名が長すぎます」エラー。
もちろん、アルゴリズムは、.zip アーカイブ名をレポートと同じに設定しています。これは、100 文字以上の文字列にすることができます。
私が実装している解決策は、潜在的なレポートの長さをチェックして、当然のことながら MAX_PATH に違反しているかどうかを確認し、必要に応じて .zip 名を切り捨てることです。
Windows 7でテストすると、これは完全に機能します。しかし、8.1でテストすると奇妙なことが起こります
アーカイブから開こうとしてもエラーがスローされますが、このエラーはもう少し謎めいています。
「申し訳ありませんが、C:\Users{ユーザー名}\AppData\Local\Temp\Temp1_{切り捨てられたアーカイブ名の残り}.zip{完全なファイル名}.xlsx が見つかりませんでした。移動された可能性はありますか?改名または削除?」
このエラーは、ファイルがブラウザから「開く」または「保存」されるかに関係なく、ポップアップし続けます。
通常は、さらに微調整するだけですが、Windows 8.1 プラットフォームでのテストには現時点で多くのオーバーヘッドが伴い、問題はパス名の長さにあるようには見えません。
何が起こっている?Windows 8 では、アーカイブ内の名前の長さに問題がありますか、それとも...?
また、たとえばユーザーエクスペリエンスではなく、ここに投稿している理由は、ソリューションがプログラム的なものになると思うからです-プログラムのコードの何か. 「エンド ユーザーが [抽出] ボタンを押すのをスキップできるようにする」というのは、簡単なユーザー エクスペリエンスを提供するためのものですが、Windows 7 では、パス全体の長さを切り詰めることで問題が解決したことはすぐに認めます。
8.1 ではなく、SO サイト ファミリをグーグル/検索しても何の助けにもなりません。皮肉なことに、Excel というキーワードが原因です。