android - Webview - 从设备上传图像的最佳方式

标签 android ios image webview image-uploading

我目前在 google play 和 itunes 上有应用程序,它们是共享 webview 的原生包装器。 webview 的美妙之处在于我可以在 webview 端进行更改,并且它们将立即在任何设备上可见,但是我无法从用户设备上存储的用户相册/画廊上传图像。

使用我当前的 webview 策略,允许用户从他们设备的 native 相册/画廊上传图像的最快实现是什么?

最佳答案

您可以使用标准的文件输入类型:

<form action="/server/upload" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

这应该在 iOS6+ 上开箱即用,并显示 native 打开文件对话框,但您必须在 Android 上进行一些编码。

在较旧的平台上,有一个使用非官方 API (WebChromeClient #openFileChooser) 的解决方法,但 Google 在 KitKat 中打破了这一点,然后在 Lollipop 中发布了对此功能的官方支持 WebChromeClient.html# onShowFileChooser。因此,KitKat 可能会继续损坏,但在其他平台上它应该可以正常工作。

请参阅此 Android 错误报告问题 62220 .

您可以自己实现它(查看 this 示例),但如果您正在寻找“正常工作”的 WebView 子类,您可能想尝试 Android-AdvancedWebView项目。

另一种选择,或仅作为 KitKat 设备的修复,是让 native 包装器将文件编码为 Base64 字符串,然后 HTML 应用程序可以将其发送到服务器。

关于android - Webview - 从设备上传图像的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29402732/

相关文章:

android - AccountAuthenticatorActivity 上的 getSupportFragmentManager

iOS:如何检查扬声器是否打开

ios - 内容 View 不显示在 UITableViewCell 上

html - div 高度与最小高度相同的背景图像

jquery - 是否可以在网页中从上到下顺序加载图像?

java - 反序列化自定义对象的序列化 ArrayList,添加对象,然后重新序列化

java - HttpURLConnection 和获取 ASPX 页面

android - 如何在ViewGroup中使用addView?

ios - SKSpritenode:物理质量不会因重力而改变加速度

android - 使用 libyuv 库缩放 YUV 图像时的问题