我遇到一个问题,找不到通过FileUpload从sql server 2008上的asp.net上的FileUpload保存到数据库的正确编码,类型为Image。我需要使用asp.net中的web服务将Web系统迁移到Android应用程序,以便与此sql server数据库进行通信,但保存的格式与已保存的文件不对应。我不知道这是一个编码(ASCII,UTF-8,...)的问题还是base64编码和解码的问题,或者是否更适合将文件视为十六进制。
系统通过fileupload组件读取文件:
file.ARCHIVE = FileUpload1.FileBytes
然后保存:context.SaveChanges ()
数据库预期的类型是Image,Web系统在保存后正常读取文件。
我需要通过原生Android应用程序(java)执行相同的过程,因此我读取该文件,将其转换为base64以将其发送到执行文件解码的Web服务并将其保存在相同的类型中数据库。当我比较文件的字符串时,字符串是不同的,因此即使应用程序正常读取,Web系统也会理解文件已损坏。
我已经测试了command.Parameters.Add ("@ ARCHIVE", SqlDbType.Image) .Value = bytes;
进行保存,但在我看来,在此保存之前,文件格式不再与网络系统相同。
在Java Android上我们喜欢这个
InputStream inputStream = context.openFileInput(filename);
if ( inputStream != null ) {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String receiveString = "";
StringBuilder stringBuilder = new StringBuilder();
while ( (receiveString = bufferedReader.readLine()) != null ) {
stringBuilder.append(receiveString);
}
inputStream.close();
ret = stringBuilder.toString();
}