Swift-stringByEvaluatingJavaScriptFromString<;输入类型=";文件">;-上传图像
在我的应用程序中,我允许用户访问UIImagePickerController,允许他们拍摄照片或从库中选择保存到DocumentDirectory中的路径:Swift-stringByEvaluatingJavaScriptFromString<;输入类型=";文件">;-上传图像,javascript,ios,swift,xcode6,stringbyevaluatingjavascr,Javascript,Ios,Swift,Xcode6,Stringbyevaluatingjavascr,在我的应用程序中,我允许用户访问UIImagePickerController,允许他们拍摄照片或从库中选择保存到DocumentDirectory中的路径: //Obtaining Saving Path let path:NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) let documentDirectory: AnyObject
//Obtaining Saving Path
let path:NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentDirectory: AnyObject = path.objectAtIndex(0)
let imagePath = documentDirectory.stringByAppendingPathComponent("Photo.png")
//casting the image selected as a UIImage
var chosenImage: UIImage = info[UIImagePickerControllerOriginalImage] as UIImage
//writing it to the set imagePath
UIImagePNGRepresentation(chosenImage).writeToFile(imagePath, atomically: true)
我的目标是访问从另一个ViewController的WebView中保存的文件,并运行一些JS在页面加载完成时自动上传文件,而不是单击“选择文件”按钮并选择文件等
这是我要调整其值的元素
<input type="file" name="field_153" id="field_153">
我尝试过使用imagePath和savedPhoto,但这显然不像向元素输入文本值那么简单
使用JS可以做到这一点吗?还是有更简单的替代方法来实现这一点
谢谢浏览器通常不允许JavaScript设置文件上传路径。这可以防止恶意网站自动上传文件。你是想对所有网页都这样做,还是只对你自己的某些网页这样做?嗨,布莱恩,我需要在7个不同的网站上运行这个。这些不是我自己的站点,但我的代码在执行任何JS之前都会对url进行检查。(我还让它填写文本字段等)-在我浪费更多时间之前,有没有办法检查是否可能?ThanksI找不到规范源,但所有的答案都指向“否”。您可以尝试一种方法,截取来自浏览器的post请求,并将其替换为使用字段值和图像构造的post请求,但这可能很脆弱/有风险。
func webViewDidFinishLoad(webView: UIWebView) {
//Retreive a UIImage object from disk
let path:NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentDirectory: AnyObject = path.objectAtIndex(0)
let imagePath = documentDirectory.stringByAppendingPathComponent("Photo.png")
let savedPhoto: UIImage = UIImage(contentsOfFile: imagePath)!
....
let uploadPictureJS = "var inputFields = document.getElementById('field_153'); inputFields.value = '\(imagePath)';"
self.webView.stringByEvaluatingJavaScriptFromString(uploadPictureJS) }