我想允许用户撰写帖子并将图片内联上传(like a CMS blog post
)。
编写文件上传脚本很简单。但是,允许“内置内置”按钮/功能被证明是棘手的 是否有关于如何执行此操作的教程?
我正在搞乱一些JavaScript来允许它。另外,我不确定是否应该显示内联tmp图像或实际上传文件(with a separate upload button than the full form upload button
)并在提交表单之前显示实际图像位置?我现在到处都是这个地方。
我应该怎么做?
谢谢。
答案 0 :(得分:7)
使用此Javascript代码:
<script type="text/javascript">
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#blah').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
</script>
添加此HTML:
<body>
<form id="form1" runat="server">
<input type='file' onchange="readURL(this);" />
<img id="blah" src="#" alt="your image" />
</form>
</body>
以下是预览:http://jsbin.com/uboqu3/edit#javascript,html,live
我认为它可以帮助你。
答案 1 :(得分:3)
您将使用HTML5文件阅读器:http://dev.w3.org/2006/webapi/FileAPI/#filereader-interface
一个更好的工作示例,从http://www.html5rocks.com/en/tutorials/file/dndfiles/
<style>
.thumb {
height: 75px;
border: 1px solid #000;
margin: 10px 5px 0 0;
}
</style>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>
<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// Loop through the FileList and render image files as thumbnails.
for (var i = 0, f; f = files[i]; i++) {
// Only process image files.
if (!f.type.match('image.*')) {
continue;
}
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function(theFile) {
return function(e) {
// Render thumbnail.
var span = document.createElement('span');
span.innerHTML = ['<img class="thumb" src="', e.target.result,
'" title="', escape(theFile.name), '"/>'].join('');
document.getElementById('list').insertBefore(span, null);
};
})(f);
// Read in the image file as a data URL.
reader.readAsDataURL(f);
}
}
//trigger dom change after event
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>