【发布时间】:2017-03-15 07:11:08
【问题描述】:
我正在做一个能够从网页获取图像的 chrome 扩展,在我得到它之后,我正在尝试将其自动上传到 Intranet 服务器,而无需用户迭代。
我现在正在这样做。
这是在 Content_script.js 上
...
x = $(frame1).contents().find("#image");
chrome.extension.sendRequest(x[0].src);
...
这是在 background.js 上
chrome.extension.onRequest.addListener(function(links) {
chrome.downloads.download( { url: links ,
conflictAction: "overwrite",
filename: "get_image.jpg" },
function(DescargaId) {
var formData = new FormData();
formData.append("doc", Blob, "~/Downloads/get_image.jpg");
var request = new XMLHttpRequest();
request.open("POST", "http://192.168.0.30/app_get_pictures/upload_img.php");
request.setRequestHeader("Content-Type", "multipart/form-data");
request.send(formData);
} );
这个在upload_img.php
...
$uploaddir = $_SERVER['DOCUMENT_ROOT'].'/app_get_pictures/images/';
$uploadfile = $uploaddir . basename($_FILES['doc']['name']);
move_uploaded_file($_FILES['doc']['tmp_name'], $uploadfile);
...
这样,我已经成功将图片下载到本地机器,但是无法上传图片到服务器。
可以这样做,或者即使我可以直接将图像上传到服务器,而无需先将其下载到本地机器。
注意:我在扩展解决方案的弹出页面上没有任何标签表单,我也没有弹出页面,因为正如我已经说过的,我不需要用户的任何迭代。
感谢您的帮助!
【问题讨论】:
-
尝试直接将图像转换为 Blob,示例应该很容易谷歌搜索,你需要 manifest.json 的
"permissions"中的"<all_urls>"。 -
在大多数情况下,将图片URL发送到服务器,让服务器自己获取图片不是更高效吗?
标签: javascript php jquery file-upload google-chrome-extension