gpt4 book ai didi

具有特定路径的 C# Path.GetTempFileName()

转载 作者:行者123 更新时间:2023-11-30 16:55:22 28 4
gpt4 key购买 nike

我正在创建一个临时文件并使用以下代码获取其路径:

    public ActionResult Comp(string Link)
{
var sv = Server.MapPath(Link);

int quality = 45;
string tempFile = Path.GetTempFileName();
System.IO.File.Copy(sv, tempFile, true);
using (var myBitmap = Image.FromFile(tempFile))
{
ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/jpeg");
Encoder myEncoder = Encoder.Quality;
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality);
EncoderParameters myEncoderParameters = new EncoderParameters(1);
myEncoderParameters.Param[0] = myEncoderParameter;
myBitmap.Save(sv, myImageCodecInfo, myEncoderParameters);
}

System.IO.File.Delete(tempFile);

return RedirectToAction("Index");
}

private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}

图像压缩器中使用的 Comp 函数。它获取字符串文件路径,通过在 Link 中获取图像在 C:\Users\User1\AppData\Local\Temp 中创建一个 tmp 文件,接下来以设置的质量编码 tmp 文件并将 tmp 文件设置为获取的图像,最后删除 tmp 文件。但是这段代码在 C:\Users\User1\AppData\Local\Temp 中创建和删除了一个临时文件。我想在特定路径中创建临时文件,因为我的服务器未获得此路径的权限。所以这段代码可能如下:

string tempFile = Path.GetTempFileName("/Content/temp/");
//It gets error that do not have overload method of GetTempFileName

最佳答案

如果问题是代码在临时文件夹中没有权限,那么简单地在代码有权限的文件夹中创建一个唯一的文件名怎么样?函数 Path.GetRandomFileName() 将执行此操作。它不会为您创建文件,它只是创建一个随机文件名,您可以在您选择的文件夹中使用该文件名。为了更加安全,您可以先检查该文件是否已经存在,但这不太可能。

例子:

String folderPathThatYouCanWriteTo = "Your Writable Path here";
String fullFilePath = null;
do
{
fullFilePath = String.Format(@"{0}\{1}", folderPathThatYouCanWriteTo, Path.GetRandomFileName());
} while (File.Exists(fullFilePath));

//Now you can use fullFilePath
etc.

关于具有特定路径的 C# Path.GetTempFileName(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29584339/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com