将文件上传到HTML表单,重命名,然后将文件返回给用户

时间:2018-01-25 22:04:45

标签: javascript html5

希望构建一个小的JavaScript Web工具来重命名文件,而无需将它们发送到服务器。理想情况下,我想将文件上传到表单,input type="file"DataTransfer(拖放),然后运行脚本更改file.name,然后显示重命名文件给用户,所有客户端。

这可能吗?我知道如何重命名文件,但如何让用户保存新文件而不将其发送到服务器?

谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个:

<html>
<head>
    <title></title>
</head>
<body>
    <input id="uploadFile" type="file" />
    <input type="button" value="rename and download" onclick="initImageUpload()" />
    <a id="aDownload">
</body>
<script>
    function initImageUpload() {
        var file = uploadFile.files[0];
        var a = document.getElementById('aDownload');
        a.href = file.name;

        var ext = file.name.split('.').pop();
        var filename = file.name.substring(0, file.name.lastIndexOf('.'));

        var newFileName = filename + "new" + "." + ext;//provide the new name here

        a.setAttribute("download", newFileName);
        a.click();
    }
</script>
</html>

答案 1 :(得分:0)

试试这个

如果你想要多个或拖放,只需编辑它

<input type="file" id="files" name="files"/>
<input type="text" id="newname"> <button>rename</button>
<div id="output"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
	$(function(){
		$('button').click(function(){
			renameFile($('#files')[0].files[0], a.files.type, $('#newname').val());
		});
		
		function renameFile(file, typeFile, newname) {
			var reader = new FileReader();
			reader.onload = function(event) {
				$('#output').append('<a href="data:'+ typeFile +';,'+ encodeURI(event.target.result) +'" download="'+newname+'">'+newname+'</a>');
			}
			reader.readAsBinaryString(file);
		}
	});
</script>