0

大きなファイルをドキュメント ライブラリにアップロードしようとしていますが、数秒後に失敗します。単一のドキュメントのアップロードはサイレントに失敗し、複数のアップロードは失敗したメッセージを表示するだけです。Web アプリケーションのファイル サイズの制限を 500 MB に上げ、IIS 要求の長さを同じ (このブログから) にし、適切な測定のために IIS タイムアウトを増やしました。私が見逃した他のサイズのキャップはありますか?

更新さまざまなサイズのいくつかのファイルを試しましたが、50MB 以上のものはすべて失敗するため、どこかがまだ webapp のデフォルトに設定されていると思います。

更新 2次の PowerShell を使用してアップロードを試みました。

$web = Get-SPWeb http://{site address}
$folder = $web.GetFolder("Site Documents")
$file = Get-Item "C:\mydoc.txt" // ~ 150MB
$folder.Files.Add("SiteDocuments/mydoc.txt", $file.OpenRead(), $false)

そして、この例外を取得します:

Exception calling "Add" with "3" argument(s): "<nativehr>0x80070003</nativehr><nativestack></nativestack>There is no file with URL 'http://{site address}/SiteDocuments/mydoc.txt' in this Web."

もちろん、ファイルがアップロードされるまで存在しないのと同じくらい奇妙に思いますか?注意: ドキュメント ライブラリには名前Site Documentsがありますが、URL がありますSiteDocuments。理由がわからない...

4

2 に答える 2

0

正しい Web アプリケーションを更新しましたか? ファイルタイプはサーバーによってブロックされていますか? コンテンツ データベースに十分なスペースがありますか? その後、ULS ログを確認し、更新が必要な 3 つのスポットにヒットしたように見えるため、別のエラーがあるかどうかを確認します。

于 2013-08-06T14:07:16.560 に答える
0

大きなファイルをアップロードする場合は、ドキュメントをアップロードする他の方法を使用する代わりに、PUT メソッドを使用できます。put メソッドを使用して、ファイルをコンテンツ データベースに直接保存します。以下の例を参照してください

注: 以下のコードの欠点は、直接アップロードを担当するオブジェクトをキャッチできないことです。つまり、アップロードされたドキュメントの追加のカスタム プロパティを直接更新することはできません。

public static bool UploadFileToDocumentLibrary(string sourceFilePath, string targetDocumentLibraryPath)
    {
        //Flag to indicate whether file was uploaded successfuly or not
        bool isUploaded = true;
        try
        {
            // Create a PUT Web request to upload the file.
            WebRequest request = WebRequest.Create(targetDocumentLibraryPath);

            //Set credentials of the current security context
            request.Credentials = CredentialCache.DefaultCredentials;
            request.Method = “PUT”;

            // Create buffer to transfer file
            byte[] fileBuffer = new byte[1024];

            // Write the contents of the local file to the request stream.
            using (Stream stream = request.GetRequestStream())
            {
                //Load the content from local file to stream
                using (FileStream fsWorkbook = File.Open(sourceFilePath, FileMode.Open, FileAccess.Read))
                {
                    //Get the start point
                    int startBuffer = fsWorkbook.Read(fileBuffer, 0, fileBuffer.Length);
                    for (int i = startBuffer; i > 0; i = fsWorkbook.Read(fileBuffer, 0, fileBuffer.Length))
                    {
                        stream.Write(fileBuffer, 0, i);
                    }

                }
            }

            // Perform the PUT request
            WebResponse response = request.GetResponse();

            //Close response
            response.Close();
        }
        catch (Exception ex)
        {
            //Set the flag to indiacte failure in uploading
            isUploaded = false;
        }

        //Return the final upload status
        return isUploaded;
    }

このメソッドを呼び出す例を次に示します

UploadFileToDocumentLibrary(@”C:\test.txt”, @”http://home-vs/Shared Documents/textfile.pdf”);
于 2013-10-01T22:03:05.410 に答える