grails:无需页面刷新即可上传图片 [英] grails: Image upload without page refresh
本文介绍了grails:无需页面刷新即可上传图片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经通过Ajax(在Grails中)对堆栈和Google for Image上传进行了一些研究,因此发现了一些旧链接,因此我决定问你们:"是否有任何方法可以上传我的用户图片使用Ajax "?我找到了一个Grails插件插件链接,但是该插件的文档不足.我想使用该插件(如我所说,由于缺少该插件的良好文档,看来我很难实现它)或请告诉我一些替代选项(如果可用).
I had did some research on stack and Google for Image upload via Ajax(In Grails) and I found some old links, therefore I decided to ask to you guys that "Is there any method to upload my user Image using Ajax"? I have found one Grails plugin plugin link but documentation of this plugin is not sufficient.I want to use this plugin(As I said due to lack of good documentation of this plugin it looks me difficult to implement it) or please tell me some alternate options if available.
推荐答案
尝试一下..,.
查看:
<html>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script language="Javascript">
function fileUpload(form, action_url, div_id) {
// Create the iframe...
var iframe = document.createElement("iframe");
iframe.setAttribute("id", "upload_iframe");
iframe.setAttribute("name", "upload_iframe");
iframe.setAttribute("width", "0");
iframe.setAttribute("height", "0");
iframe.setAttribute("border", "0");
iframe.setAttribute("style", "width: 0; height: 0; border: none;");
// Add to document...
form.parentNode.appendChild(iframe);
window.frames['upload_iframe'].name = "upload_iframe";
iframeId = document.getElementById("upload_iframe");
// Add event...
var eventHandler = function () {
if (iframeId.detachEvent) iframeId.detachEvent("onload", eventHandler);
else iframeId.removeEventListener("load", eventHandler, false);
// Message from server...
if (iframeId.contentDocument) {
content = iframeId.contentDocument.body.innerHTML;
} else if (iframeId.contentWindow) {
content = iframeId.contentWindow.document.body.innerHTML;
} else if (iframeId.document) {
content = iframeId.document.body.innerHTML;
}
document.getElementById(div_id).innerHTML = content;
// Del the iframe...
setTimeout('iframeId.parentNode.removeChild(iframeId)', 250);
}
if (iframeId.addEventListener) iframeId.addEventListener("load", eventHandler, true);
if (iframeId.attachEvent) iframeId.attachEvent("onload", eventHandler);
// Set properties of form...
form.setAttribute("target", "upload_iframe");
form.setAttribute("action", action_url);
form.setAttribute("method", "post");
form.setAttribute("enctype", "multipart/form-data");
form.setAttribute("encoding", "multipart/form-data");
// Submit the form...
form.submit();
document.getElementById(div_id).innerHTML = "Uploading...";
}
</script>
<body>
<g:form>
<input type="file" name="myFile"/><br/><br/>
<input type="button" value="upload" onClick="fileUpload(this.form, '${g.createLink(controller: 'dashboard', action: 'test')}', 'upload'); return false;">
<div id="upload"></div>
</g:form>
</body>
</html>
操作:
def test() {
if (params.myFile) {
def fileName
def inputStream
if (params.myFile instanceof CommonsMultipartFile) {
fileName = params.myFile?.originalFilename
inputStream = params.myFile.getInputStream()
} else {
fileName = params.myFile
inputStream = request.getInputStream()
}
fileName = fileName.replaceAll(" ", "_")
File storedFile = new File("DIRECTORY_PATH_TO_SAVE_IMAGE/${fileName}")
storedFile.append(inputStream)
render '<img src="data:' + 'jpg' + ';base64,' + new String(new Base64().encode(storedFile.bytes), "UTF-8") + '" ' + ' />'
} else {
render "No Image"
}
}
这篇关于grails:无需页面刷新即可上传图片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文