2016-06-20 10 views
0

私はデータベースから従業員のイメージをエクスポートし、自分のコンピュータに保存してから各従業員のアカウントのSalesforceにアップロードしようとしています。私の問題は、データベースからファイルを保存する方法に問題があることです。 Salesforceにアップロードして画像ファイルをデータベースから取得すると、「この時点でファイルをアップロードできません。数分後にもう一度お試しください」というメッセージが表示されます。しかし、自分の写真を自分宛てにメールしてダウンロードした後、その写真をアップロードすれば動作します。 (私は大量にこれをやろうとした;それはうまくいかなかった)。私はコードに問題があると結論づけました。写真はvarbinary(max)として保存され、両方.png.jpeg種類として保存、およびMSDNさんのバリエーションのコードを使用してデータベースから抽出されます。ここで、それC#データベースからバイナリイメージファイルを正しく保存するにはどうすればよいですか?

SqlConnection connection = new SqlConnection(connectionString); 
    SqlCommand command = new SqlCommand(queryString, connection); 

    connection.Open(); 
    SqlDataReader myReader = command.ExecuteReader(CommandBehavior.SequentialAccess); 

    while (myReader.Read()) 
    { 
     filePath = @"C:\Users\npredey\Documents\Photos_from_database\" + myReader["first_name"] + '_' + myReader["last_name"]; 
     FileStream fs = new FileStream(filePath + ".gif", FileMode.OpenOrCreate, FileAccess.Write); // creates a new file for output 

     bw = new BinaryWriter(fs); 

     startIndex = 0; 
     retval = myReader.GetBytes(3, startIndex, outbyte, 0, bufferSize); 

     while (retval == bufferSize) 
     { 
     bw.Write(outbyte); 
     bw.Flush(); 

     startIndex += bufferSize; 
     retval = myReader.GetBytes(3, startIndex, outbyte, 0, bufferSize); 
     } 

     bw.Write(outbyte, 0, (int)retval - 1); 
     bw.Flush(); 

     bw.Close(); 
     fs.Close(); 
    } 
    myReader.Close(); 
    connection.Close(); 

は、ファイルが保存されている方法に問題がある可能性がありアップロードできないでしょうか?私はすべての3つの拡張子(.gif.jpg.png)のファイルを保存しましたが、どれも機能しませんでした。

+0

"写真はvarbinary(max)として保存されますが、どの形式を使用しますか? – enkryptor

+0

@enkryptorが編集されました。 –

+1

画像データを 'Filestream'カラムに保存しているようです。サーバオプション'ファイルI/OストリーミングアクセスのFILESTREAMを有効にする 'が有効になっていると、Windowsエクスプローラから直接データにアクセスできます。それはあなたに頭痛を救うかもしれません。 –

答えて

1

最後に、から1を引くべきではありません。

retvalには、読み取られたバイト数が含まれています。 BinaryWriter.Writeの3番目のパラメータは、書き込むバイト数です。

すべてのバイトを書きたいので、の代わりにretvalを渡すだけで、最後のバイトは書き込まれません。

+1

これは何ですか?それを修正!なぜこれが当てはまるのか説明できますか? –

+1

@NickPredey解説と解説を編集します – Shago

関連する問題