从阅读 Stack and the web 我收集到,出于安全原因,您无法预填充此选项。但是,我有许多用户需要填写的页面表单。通过将其他变量保留为会话变量,我可以让页面记住它们以前的条目并在回调该页面时重新显示它们、文本框、按钮等。我没有不知道如何对文件名输入表单组件做同样的事情。如果有解决方法有什么想法吗?
问问题
2749 次
1 回答
3
如果图像已经上传,您将需要在逻辑服务器端显示上传图像的缩略图,并提供上传新图像的选项,此时您将显示一个空文件输入。就像是...
if(sessioncontains("uploaded")) {
out << "<img src=\"" + (sessionget("uploaded")->thumb) + "\"/>";
out << "<label>Upload a new image</label>";
} else {
out << "<label>Upload an image</label>";
}
out << "<input type=\"file\"/>";
编辑以便您希望在提交之前保存字段的值,您可以将它们发布到幕后的服务器。如何异步上传文件?. 或者您可以将它们序列化为window.localStorage
数据 URL(注意存储限制)。
Javascript...
function retrieveFiles() {
var files = [];
var json = window.localStorage.getItem("files");
if(json.length) {
try {
files = JSON.parse(json);
} catch(ex) {
console.err("There was an error", files, window.localStorage);
}
}
return files;
}
function storeFiles(files) {
window.localStorage.setItem("files", JSON.stringify(files));
}
$(function() {
var arr = retrieveFiles();
$("#file").on("change", function() {
var files = $(this).prop("files");
var reader = new FileReader();
reader.onload = function(e) {
arr.push(e.target.result);
storeFiles(arr);
}
for(var i = 0; i < files.length; ++i) {
reader.readAsDataURL(files[i]);
}
});
$("form").on("submit", function() {
// Post files array arr by AJAX
});
});
HTML...
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" id="file" multiple/>
<button type="submit">Submit</button>
</form>
于 2012-10-16T11:40:34.240 回答