临时存储文件

本文关键字:存储文件 | 更新日期: 2023-09-27 18:09:01

我的图像拖放函数的代码如下:问题是它暂时将文件保存到我的计算机@"C:'Users'xxxx'Desktop'。这是一个问题,因为这意味着用户不能使用这个功能。那么,我如何调整我的代码,以使其在线工作?

我需要找到一种临时存储图像的方法。

public ActionResult SaveUploadedFile(string test)
        {

            foreach (string fileName in Request.Files)
            {
                HttpPostedFileBase file = Request.Files[fileName];

                var filename = Path.GetFileName(file.FileName);
                var sourceimage = System.Drawing.Image.FromStream(file.InputStream);
                img = sourceimage;
                var dog = new Dog();
                byte[] tempImg = dog.imageToByteArray(sourceimage);
                var fullPath = @"C:'Users'xxxx'Desktop'" + filename;
                file.SaveAs(fullPath);

                string link = dog.UploadImage(fullPath);
                JObject o = JObject.Parse(link);
                string name = (string) o.SelectToken("data.link");
                System.IO.File.Delete(@"C:'Users'xxxx'Desktop'" + filename);
                var page = RavenSession.Load<DogContentPage>(test);
                page.Image = name;
                RavenSession.SaveChanges();

            }

上传图片到imahehost的方法(不知道是否相关):

    public string UploadImage(string xOut)
    {

    using (var w = new WebClient())
    {
        var values = new NameValueCollection
        {
            {"image", Convert.ToBase64String(File.ReadAllBytes(xOut))}
        };
        w.Headers.Add("Authorization", "Client-ID " + ClientId);
        var response = w.UploadValues("https://api.imgur.com/3/image", values);
        var sr = new StreamReader(new MemoryStream(response));
        string result = sr.ReadLine();
        return result;

    }

临时存储文件

看看Path.GetTempPath()Path.GetTempFileName(),它们可以帮助你。

一个快速的解决方案是:

 // var fullPath = @"C:'Users'xxxx'Desktop'" + filename; // Not good, since user folder
 var fullPath = Path.GetTempFileName(); // Temp file, with unqiue name

我推荐Path.GetTempFileName()而不是Path.GetTempPath() + filename的原因是,当您只上传文件字节时,文件名并不重要,并且它保证了唯一的文件名,因此不可能有文件名冲突。

var fullPath = Path.GetTempPath() + filename; // No good, could clash if the filenames were the same

与其使用硬编码字符串,不如使用以下命令来查找存放临时文件的临时文件夹:

string tempPath = System.IO.Path.GetTempPath();

我认为有两个解决方案:

N°1:服务器上的一个任务,假设每天检查2次,如果有任何文件必须删除

N°2:由应用程序调用的过程,用于验证文件的Now和过期日期之间的差异。