使用 PhoneGap + iPhone 上传文件
Posted
技术标签:
【中文标题】使用 PhoneGap + iPhone 上传文件【英文标题】:Uploading files with PhoneGap + iPhone 【发布时间】:2010-11-29 20:38:04 【问题描述】:我了解 PhoneGap 应用程序大部分(如果不是全部)是 html5 + CSS + javascript。 iPhone 本身不提供上传文件的控件。
PhoneGap 是否提供任何允许用户上传文件的机制? (图片/视频,以 iPhone 为例)
我知道 Titanium 允许用户这样做,但它是一种不同的动物,它具有编译的 Javascript 和专有 API。感谢您的建议/意见。
【问题讨论】:
查看这篇文章(链接已更改,因为这是最初发布的):zacvineyard.com/blog/2011/03/… iPhone 现在确实提供了一个本地控件来上传图片。 认真的吗?<input type="file" />
现在可以在 ios 7 上使用吗?
是的。即使在 iOS 6 中。它会要求用户从相机胶卷中选择一张照片或拍摄一张新照片。
这对我来说是个新闻(我从未升级过 iOS 5)。谢谢!
【参考方案1】:
如果服务器应用程序支持,我相信您可以使用 PhoneGap API 读取文件并使用 AJAX 发布上传它们。
另一种选择是在 PhoneGap 中编写一个自定义模块/插件,以满足您的需求。
这里有一些Example Plugins
【讨论】:
看起来已经差不多了。知道以这种方式读取/发布文件是否会使内存过载?不确定它是否会在尝试之前缓冲整个事情。 我不知道,以前没有真正尝试过,但你总是可以写一个插件,它们并不难。我写了一个来下载代码。所有来源都张贴在这里blog.clearlyinnovative.com/post/2056122828/… 有趣的是,我还没有看到一个正在运行的插件。感谢您的链接。【参考方案2】:您可以对本地驱动器上的文件执行 xmlhttprequest。 我不能 100% 确定它是否可以在 iPhone 上运行,但 webkit 应该支持它。
function getImageBinaries(url) //synchronous binary downloader for firefox2
var req = new XMLHttpRequest();
req.open("GET", url, false);
req.overrideMimeType('text/plain; charset=x-user-defined');
req.send("");
if (req.status != 200)
return "";
var t = req.responseText || "" ;
var ff = [];
var mx = t.length;
var scc= String.fromCharCode;
for (var z = 0; z < mx; z++)
ff[z] = scc(t.charCodeAt(z) & 255);
var b = ff.join("");
return b;
成功, 埃里克
【讨论】:
是的,但是你有二进制文件。然后,您可以将它们编码为 base64 字符串并使用它来上传文件。如果要发布,可以将 base64 放入字段中。只是不要忘记在您的服务器端进行一些更改以对其进行解码。最好制作一个 因为并非所有设备(包括 iPhone)都支持。你可以发布这些数据,或者用它做一个 httprequest。以上是关于使用 PhoneGap + iPhone 上传文件的主要内容,如果未能解决你的问题,请参考以下文章
PhoneGap 您的二进制文件未针对 iPhone 5 进行优化