如上图 ,input type="file",怎么把选择的文件复制或者直接上传到指定目录下
做不了,可以弹出保存对话框,但是需要用户选择保存的路径,无法指定
<input type="file" onchange="toBase64(this)" />
<script>
var type = 'png';
var _fixType = function (type) {
type = type.toLowerCase().replace(/jpg/i, 'jpeg');
var r = type.match(/png|jpeg|bmp|gif/)[0];
return 'image/' + r;
};
var saveFile = function (data, filename) {
var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href = data;
save_link.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
};
function toBase64(el) {
if (el.files.length > 0) {
var f = new FileReader();
f.onload = function (e) {
saveFile(e.target.result, 'newfile.png');
}
f.readAsDataURL(el.files[0])
}
}
</script>
form post方式上传到指定目录
只能存到对应的项目路径下的
你可以将服务器上的目录先传到页面,然后在页面选择想要存放的路径,然后再将要存放的目录路径传到后台进行操作
你是不是 在程序中 配置了 读取文件目录是 静态的,然后希望用户下载的时候也放这里,你这个设计是不对的,用户的行为和访问设备都是随机的。尤其是浏览器访问是不可控的,希望提供具体思路帮你从源头修改问题
路径是写在后台代码里面的,我看你用的vs,那么就应该是.net语言了。
if (!Directory.Exists(_filedir))
{
Directory.CreateDirectory(_filedir);
}
string fileName = _filedir + newFileName;
hpf.SaveAs(fileName);
这个fileName就包含了路劲,
你是不是 在程序中 配置了 读取文件目录是 静态的,然后希望用户下载的时候也放这里,你这个设计是不对的,用户的行为和访问设备都是随机的。尤其是浏览器访问是不可控的
上传到对应的项目路径下的 比如WEB
一般是后台写成固定的目录路径,前台上传就直接到设定的目录下面了
按你这样叙述还是等于 配置成静态的了 ,浏览器无法获取对PC的 控制 所以无法 强制设定 下载目录 。你这种 用户选择文件路径 就设定成默认路径的方法只适用于
客户端程序
private string UploadFile()
{
int cout = Request.Files.Count;
if (cout > 0)
{
HttpPostedFile hpf = Request.Files[0];
string fileNameStr = hpf.FileName;
string old_fileName = fileNameStr.Substring(fileNameStr.LastIndexOf("\") + 1,
fileNameStr.Length - fileNameStr.LastIndexOf("\") - 1);
if (hpf != null)
{
if (old_fileName.IndexOf(",") == -1)
{
string fileExt = Path.GetExtension(hpf.FileName).ToLower();
//只能上传文件,过滤不可上传的文件类型
string fileFilt =
".RAM|.mp3|.WAV|.RM|.REAL|.MIDI|.rar|.jpg|.jpeg|.gif|.png|.zip|.pdf|.pdfx|.txt|.csv|.xls|.xlsx|.doc|.docx......";
if (fileFilt.IndexOf(fileExt) <= -1)
{
return "1";
}
//判断文件大小
int length = hpf.ContentLength;
if (length > 20971520)
{
return "2";
}
Random rd = new Random();
DateTime nowTime = DateTime.Now;
string newFileName = DateTime.Now + nowTime.Month.ToString("yyyyMMddhhddssfff")+ Path.GetExtension(hpf.FileName);
if (!Directory.Exists(_filedir))
{
Directory.CreateDirectory(_filedir);
}
string fileName = _filedir + newFileName;
hpf.SaveAs(fileName);
return newFileName + "|" + old_fileName;
}else
{
return "4";
}
}
}
return "3";
}