如何将文件上传到指定目录下

图片说明

如上图 ,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";
    }