如何将拖放图像保存到服务器?

Posted

技术标签:

【中文标题】如何将拖放图像保存到服务器?【英文标题】:How can I save a drag and dropped image to the server? 【发布时间】:2018-06-11 03:19:18 【问题描述】:

首先,背景。 一切都在企业防火墙之后,因此无法显示实时版本或访问诸如 nodeJS 或许多库之类的漂亮工具。

我有 htmlphp 5、javascript 和 jquery1.9。

我有一个包含大量数据的 Web 窗口。我想让用户能够将一张名为侦探图像的图片放入一个盒子中,显示该盒子,并将该图像保存在我服务器上的一个特殊位置。侦探图像是在不同的内部服务器上动态生成的图,我对(另一个部门)没有任何权限。虽然它可以命名为任何名称,但我想用一个特定的名称保存它,以便稍后重新加载此数据的 Web 窗口时它可以正确显示。

我有这个 javascript 函数,它允许他们删除图像并显示它。我只需要将图像保存为.png。

	function drop_handler(event) 
	// this is part of the ability to drag sleuth images onto the OOC
	// Prevent default behavior (Prevent file from being opened)
		event.preventDefault();
 		var items = event.dataTransfer.items;
		for (var i = 0; i < items.length; i++) 
			var item = items[i];
			if (item.kind === 'string') 
				item.getAsString(function(data) 
				document.getElementById("sleuth").innerHTML = data;
				);
			
		 
	

我需要将变量“data”中显示的img src保存为“sleuthImg.png”

是的,我知道我需要添加验证。首先,我需要这部分工作。

【问题讨论】:

【参考方案1】:

首先,您需要在服务器上设置一个可以接受文件并存储它们的端点。假设您已经拥有该部分,那么:

dataTransfer 对象中获取文件 https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/files

然后新建一个FormData https://developer.mozilla.org/en-US/docs/Web/API/FormData

var formData = new FormData();
formData.append('file', fileFromDataTransfer);
formData.append('mime_type', fileFromDataTransfer.type);

(其中'file' 是您的服务器期望的post 参数的名称。'mime_type' 是作为示例包含的另一个表单数据参数)

然后,使用您选择的请求库,使用表单数据发出 POST 请求。

post('your/upload/endpoint', formData);

【讨论】:

感谢您的回复。虽然这是一个合理的建议,但由于进一步的复杂性,它并不能解决我的特定问题。我将检查它是否已解决并从另一个角度解决这个问题。

以上是关于如何将拖放图像保存到服务器?的主要内容,如果未能解决你的问题,请参考以下文章

将拖放组件添加到 iOS 应用程序

Qt:将拖放委托给孩子的最佳方式

将拖放文件拖放到 Python 脚本上

AngularJS - 将拖放与流程图相结合

在 laravel 中解码和移动 base64 编码的图像

拖放 2 张图像以将它们放置在背景上并将它们保存为 1 张组合图像?