我正在编写一个Web应用程序,除其他外,它允许用户将文件上传到我的服务器.为了防止名称冲突和组织文件,我将它们放在我的服务器上后重命名.通过跟踪原始文件名,我可以与文件的所有者进行通信,而他们不知道我在后端更改了文件名.也就是说,直到他们去下载文件.在这种情况下,系统会提示他们下载一个名称不熟悉的文件.
我的问题是,有没有办法只使用HTML指定要下载的文件的名称?因此,用户上传名为'abc.txt'的文件并将其重命名为'xyz.txt',但是当他们下载它时,我希望浏览器默认将文件保存为'abc.txt'.如果仅使用HTML无法做到这一点,有没有办法做到这一点?
如何让浏览器显示"另存为对话框",以便用户可以将字符串的内容保存到系统中的文件中?
例如:
var myString = "my string with some stuff";
save_to_filesystem(myString,"myString.txt");
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
在我的SaveFileDialog中,我在过滤器中有多种类型,但是当查看对话框时,如果我选择过滤器来查看目录中该类型的文件,我只能看到第一个和最后一个过滤器的文件.
bool save;
SaveFileDialog dlg = new SaveFileDialog();
dlg.FileName = "*";
dlg.DefaultExt = "bmp";
dlg.ValidateNames = true;
dlg.Filter = "Bitmap Image (.bmp)|*.bmp|Gif Image (.gif)|*.gif |JPEG Image (.jpeg)|*.jpeg |Png Image (.png)|*.png |Tiff Image (.tiff)|*.tiff |Wmf Image (.wmf)|*.wmf";
save = (bool)dlg.ShowDialog();
if (save)
{
SaveImage(dlg.FileName);
}
Run Code Online (Sandbox Code Playgroud)
我可以看到.bmp和.wmf类型的文件如果我改变过滤器的顺序,我总是只能看到第一个和最后一个.
我在using块中使用了以下代码块和更多代码:
using (System.Drawing.Bitmap tempImg =
(System.Drawing.Bitmap)tempObj.GetData(System.Windows.Forms.DataFormats.Bitmap))
{
// ...
tempImg.Save("..\\..\\testdata\\tempImg.bmp", ImageFormat.Bmp);
// ...
}
Run Code Online (Sandbox Code Playgroud)
但我仍然得到错误:
GDI +发生了一般错误
只有在我做了一些与使用块内的代码无关的动作之后.在其他时候,这很好.tempImg.bmp也是一个临时文件,因此我删除了using块本身中的tempImg.bmp.
由于tempImg在使用中并且它被处理掉了,我认为应该解决锁定问题.
有人可以让我知道这段代码中的错误是什么?
编辑:
System.Drawing.Image
要System.Drawing.Bitmap
为一体的类型tempImg
.
编辑: 我发现只有在创建了SaveFileDialog并且用户点击"保存"后才会出现此错误.
在我的应用程序中,我使用SaveFileDialog弹出另存为窗口.我在文件类型部分中限制了要使用以下代码保存为.dat的文件.
sfdialog.Filter = "Data Files (*.dat*)|*.dat*";
Run Code Online (Sandbox Code Playgroud)
我想知道怎么做是使用.dat扩展名自动保存.目前它只保存没有扩展名,除非我专门将其保存为filename.dat.
我想让我的VBScript显示Windows另存为对话框,但我找不到如何做到这一点.
使用此代码:
Dim sfd
Set sfd = CreateObject("UserAccounts.CommonDialog")
sfd.ShowOpen
Run Code Online (Sandbox Code Playgroud)
我可以得到一个Open对话框,但是没有ShowSave
这个对象的方法(因为在Visual Basic非脚本中似乎有类似的对象).
我搜索了StackOverflow并搜索了"[vbscript] save dialog"(以及"Windows Script Host"),但我只找到了关于从网页访问常用对话框的线程和BrowseForFolder
对话框的解决方案,而没有关于调用Save对话框的内容.
实际上,我可以使用"打开"对话框来实现我的目的,因为我只需要一个文件名...但是由于我想将某些东西保存到选定的路径,对话框的标题栏中的"另存为"会更合适.
我想SaveFileDialog
用default file name
价值创造DataGridViewCells
到目前为止我试过了
private void buttonSave_Click(object sender, EventArgs e)
{
//first
//mySaveFileDialog.FileName = myDataGridView.SelectedCells[2].Value.ToString();
//second
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.FileName = myDataGridView.SelectedCells[2].Value.ToString();
saveFile.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决这个问题?
我试图在内存中创建一个文本文件,添加一些行,最后将文件保存在文本文件中.我可以处理savedialog部分,但我不知道如何从内存中获取文本文件.任何帮助和提示都将受到关注.
到目前为止我所做的是:
//Initialize in memory text writer
MemoryStream ms = new MemoryStream();
TextWriter tw = new StreamWriter(ms);
tw.WriteLine("HELLO WORLD!");
tw.WriteLine("I WANT TO SAVE THIS FILE AS A .TXT FILE!);
Run Code Online (Sandbox Code Playgroud)
请注意 我将调用tw.WriteLine()在不同的地方添加更多行,所以我想在程序结束时保存它(所以这个主题应该包含在使用{}之类的东西中)
UPDATE
StringBuilder似乎是一个更可靠的选择!当我使用MemoryStream执行此操作时,我的文本文件中出现了奇怪的剪切.
谢谢.
在Notepad ++(Windows 7)中,有没有办法在保存文件时禁用"公用文件"对话框?我想用标准的"保存文件"对话框替换它.
Notepad ++使用此对话框进行保存:
我想使用以下对话框:
向"我的位置"栏添加快捷方式不是一个选项,因为我根本不打算使用"公共文件"对话框.
我的应用程序有一个"打开文件"按钮.在启动OpenFileDialog之前,它会询问用户是否要保存当前文件,如果是,则启动SaveFileDialog.然后它启动OpenFileDialog.很标准的东西.
我的问题是Silverlight然后看到OpenFileDialog.ShowDialog()方法不是用户启动的,我得到一个SecurityException.
是否有任何已知的合理方法可以避免此异常?当然这是一个非常标准的场景?
该应用程序位于浏览器中.
欢迎任何想法
编辑:
对不起,不允许发布实际代码:(逻辑非常简单:在伪造的代码中,'OpenFile'按钮按下事件调用一个方法,如:
*发出新的SL消息,询问是否先保存.
*在消息窗口中是/否单击: - 如果否,转到加载 - 如果是,则启动SaveFileDialog.ShowDialog(),转到加载
*加载:启动打开文件对话框
编辑2:迷你程序......
主页的XML内容:
<Grid x:Name="LayoutRoot" Background="White">
<Button Content="Open" Click="Button_Click"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
码:
using System.Windows;
using System.Windows.Controls;
namespace SilverlightApplication15
{
public partial class MainPage : UserControl
{
AskWindow aw = new AskWindow();
public MainPage()
{
InitializeComponent();
aw.Closed += new System.EventHandler(aw_Closed);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
aw.Show();
}
private void aw_Closed(object sender, System.EventArgs e)
{
if (aw.DialogResult == true)
{
SaveFileDialog svd = new SaveFileDialog();
svd.ShowDialog();
} …
Run Code Online (Sandbox Code Playgroud) savefiledialog ×10
c# ×6
.net ×2
save ×2
bitmap ×1
download ×1
html ×1
javascript ×1
memorystream ×1
notepad++ ×1
silverlight ×1
textwriter ×1
vbscript ×1
windows-7 ×1
winforms ×1