从Android上传图像到c#会导致错误和图像畸形

本文关键字:图像 错误 Android | 更新日期: 2023-09-27 18:15:17

我正在尝试从手机中挑选图像并将其上传到c# . net Web服务。移动应用程序可以连接到其他。net服务组件。

当我尝试上传PNG图像文件大小在Android应用程序和。net服务器端应用程序之间的字节变化。我已经使用Wireshark跟踪流量,它显示了一个畸形的PNG。

104 6.538812    192.168.1.1 192.168.1.2 HTTP    992 POST  PostSave HTTP/1.1  (PNG)[Malformed Packet]

这是Android代码片段,查找图像并将其转换为字节数组。

inputStream = getContentResolver().openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
inputStream.close();
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
imageBytes = byteArrayOutputStream.toByteArray();

这是Android代码片段,它使用dataoutputstream将PNG添加到httpurlconnection。

dataOutputStream.writeBytes(Constants.FORM_BOUNDARY +
                                "Content-Disposition: form-data; name= '"file_" + fileUpload.getAlias() + "'"; filename='"" + fileUpload.getDisplayName() + "'"'r'nContent-Type:" + fileUpload.getMimeType() + "'r'n");
dataOutputStream.write(fileUploads.get(i).getByteArray(), 0, fileUploads.get(i).getByteArray().length);

dataOutputStream.writeBytes("'r'n");

这是导致。net端异常的代码

fileStream = File.OpenRead(file.TempFilePath)    
Image.FromStream(fileStream)

. net异常消息如下。

{"Parameter is not valid."}

我可以在Temp文件夹中看到文件,它似乎不是一个格式良好的PNG,并且无法使用图像查看器打开。

感谢您的帮助。

从Android上传图像到c#会导致错误和图像畸形

我自己解决了这个问题,这在Android和。net之间发送数据时似乎很常见,但细节是出错的地方。一个额外的换行符表示图像在服务器端被正确读取。

dataOutputStream.writeBytes(Constants.FORM_BOUNDARY +
                            "Content-Disposition: form-data; name= '"file_" + fileUpload.getAlias() + "'"; filename='"" + fileUpload.getDisplayName() + "'"'r'nContent-Type:" + fileUpload.getMimeType() + "'r'n'r'n"");