私はデータベースから従業員のイメージをエクスポートし、自分のコンピュータに保存してから各従業員のアカウントの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
)のファイルを保存しましたが、どれも機能しませんでした。
"写真はvarbinary(max)として保存されますが、どの形式を使用しますか? – enkryptor
@enkryptorが編集されました。 –
画像データを 'Filestream'カラムに保存しているようです。サーバオプション'ファイルI/OストリーミングアクセスのFILESTREAMを有効にする 'が有効になっていると、Windowsエクスプローラから直接データにアクセスできます。それはあなたに頭痛を救うかもしれません。 –