我正在修复,因为我必须将已放入 DIV 小部件(Google Chrome)的文件放到服务器位置。我可以在新窗口中看到在浏览器缓存中创建的文件:
var image = new Image();
getBlobFromURL(blobURL).then(fromBlobToBase64).then(function(result) {
image.src = result;
var headerImageLocation = //'../Appbilder/Startseite/' +
seldomID() + '.' + getFileExtension(result);
var w = window.open('');
w.document.write(image.outerHTML);
fileUpload(image.outerHTML);
…
};
虽然图片在那里,但我无法使用我在网上找到的以下功能上传它:
function fileUpload(file) {
var url = server.ServiceTest + 'images/'; // 'http://app.ivm.at/ServiceTest/images/
var xhr = new XMLHttpRequest();
xhr.open('POST', url);
var formData = new FormData();
formData.append('uploadfile', file);
xhr.send(formData);
}
我需要抓取可见文件并将其发送到特定服务器位置。 Web页面的代码位于名为 ./ Backend 的某个位置,图像应该转到 ./ Backend / images 位置。我错了什么?在发送文件之前,我是否必须首先在本地写入文件?我使用 xhr.open 发送的网址是我希望上传文件的位置。
编辑1: 我想用PHP代码保存文件。这是对的:
$formData = $_POST['formData'];
$fp = fopen($formData.filename, "w");
fwrite($fp, $formData.file);
fclose($fp);
编辑2:
我稍微修改了代码如下,因为我必须在等待时尝试找到解决方案:
fileUpload(image.src, headerImageLocation, url);
该方法现在看起来像这样:
function fileUpload(file, fileName, url) {
var functionName = logging.createFunctionName('fileUpload', file, fileName, url);
var xhr = new XMLHttpRequest(); // den AJAX Request anlegen
messages.print(functionName, 'called');
xhr.open('POST', url);
var formData = new FormData();
formData.append('filename', fileName); // Anhängen der Datei an das Objekt
formData.append('file', file); // Anhängen der Datei an das Objekt
xhr.send(formData);
};
在服务器端,我创建了一个名为' filename'的文件。其中包含四个字母:' file'。所以,我们正在接近。我需要的是文件名&传递真实内容,以便我在服务器端(如01237.png)获得一个正确的内容。
编辑3 :为了找到我的问题的解决方案,我删除了 FormData 对象,因为我无法使用PHP访问它的内容。我现在在C / S端使用以下代码:
function fileUpload(file, fileName, url) {
var functionName = logging.createFunctionName('fileUpload', file, fileName, url);
var xhr = new XMLHttpRequest(); // den AJAX Request anlegen
messages.print(functionName, 'called');
xhr.open('POST', url);
var data = { name: fileName, image: file};
xhr.send(data);
};
在服务器端,我使用以下PHP代码访问数据:
$json = $_POST['data'];
$data = json_decode($json, true);
// Only proceed if we got valid input
if ($data !== null) {
//$fp = fopen('filename', "w");
$fp = fopen($data->name, "w");
fwrite($fp, $data->image);
//fwrite($fp, 'image');
fclose($fp);
} else {
$result = 'Nothing posted';
}
die(json_encode($result));
我留下了两条注释行,这些行会创建一个名为' filename'内容'图像'。未注释的部分既不会出错,也不会在当前目录中创建任何内容。
到目前为止,我所有的服务器访问都是使用调用数据库的PHP代码。我正在编写第一个尝试在服务器端直接创建文件的服务。