我已经告诉过我应该使用FileResult来允许用户从我的Asp.Net MVC应用程序下载文件.但我能找到的唯一例子总是与图像文件有关(指定内容类型image/jpeg).
但是,如果我不知道文件类型怎么办?我希望用户能够从我网站的文件区下载几乎任何文件.
我已经阅读了一个这样做的方法(参见前面的代码文章),实际上工作正常,除了一件事:"另存为"对话框中出现的文件名与带有下划线的文件路径连接在一起( folder_folder_file.ext).此外,似乎人们认为我应该返回一个FileResult而不是使用我找到BinaryContentResult的自定义类.
有人知道在MVC中进行这种下载的"正确"方式吗?
编辑:我得到了答案(下面),但我想如果其他人感兴趣我应该发布完整的工作代码:
public ActionResult Download(string filePath, string fileName)
{
string fullName = Path.Combine(GetBaseDir(), filePath, fileName);
byte[] fileBytes = GetFile(fullName);
return File(
fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
byte[] GetFile(string s)
{
System.IO.FileStream fs = System.IO.File.OpenRead(s);
byte[] data = new byte[fs.Length];
int br = fs.Read(data, 0, data.Length);
if (br != fs.Length)
throw new System.IO.IOException(s);
return data;
}
Run Code Online (Sandbox Code Playgroud) 我是单元测试场的新手; 我现在只使用了大约2个月的单元测试.当我在Ruby中进行单元测试时,我目前遵循TDD风格并使用Test :: Unit :: TestCase.我还阅读了有关RSpec以及它如何遵循BDD方法的内容.我也读过关于Shoulda的内容,它介于两个框架之间.我的问题是,我应该把时间花在RSpec或Shoulda上,或者我应该坚持使用Test :: Unit :: TestCase?任何有关该主题的意见表示赞赏.
由于mongo没有架构,这是否意味着我们在更改模型时不必进行迁移?
使用非关系数据库,迁移过程是什么样的?
在给定匹配条件的情况下,我想将一行移动到结果集的底部.
+-------+------------+
|Symbol | Percentage |
|-------|------------|
|VG | 20 |
|-------|------------|
|CASH | 20 |
|-------|------------|
|GOOG | 60 |
+-------+------------+
Run Code Online (Sandbox Code Playgroud)
例如:
SELECT * FROM TableName -SEND TO END OF RESULT SET- WHERE symbol = 'CASH'
结果集:
GOOG
VG
CASH
Run Code Online (Sandbox Code Playgroud)
我需要为一个ORDER BY语句写一个例外.将查询放入普通英语 - SELECT整行,按时间戳排序,除非符号为"CASH"
我正在查找关键字volatile以及它的用途,我得到的答案非常多:
它用于防止编译器优化代码.
有一些示例,例如轮询内存映射硬件时:没有volatile轮询循环将被删除,因为编译器可能会识别出条件值永远不会更改.但由于只有一个例子或两个例子,它让我思考:volatile在避免不必要的优化方面我们还需要使用其他情况吗?条件变量是唯一volatile需要的地方吗?
我认为优化是特定于编译器的,因此未在C++规范中指定.这是否意味着我们必须通过直觉,说嗯,我怀疑如果我没有声明该变量volatile或者是否有任何明确的规则,我的编译器将废除它?
嘿伙计们,我仍然是一个Android和Java菜鸟,但我看到的一切都告诉我这应该完全奏效,但事实并非如此!不是在模拟器中,而是在手机上..我正在尝试使用振动器振动(500); ..我得到一个"应用程序意外停止"错误
我错过了什么?
代码如下:
package com.phys;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class phys extends Activity {
Vibrator vibr;
Button but;
TextView txt;
int counter = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
vibr = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
but = (Button)findViewById(R.id.Button01);
txt = (TextView)findViewById(R.id.txt);
but.setOnClickListener(clk);
}
OnClickListener clk = new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated …Run Code Online (Sandbox Code Playgroud) 尽管有使用SSL/https /等的所有建议.我决定在我的应用程序的http顶部实现我自己的安全层...这个概念的工作原理如下:
User registers -> a new RSA Keypair is generated
the Private Key gets encrypted with AES using the users login Password
(which the server doesnt know - it has only the sha256 for authentication...)
Server stores the hash of the users password
and the Encrypted Private Key and Public Key
User logs in -> authenticates with nickname+password hash
(normal nick/password -> IP-bound sessionid authentication)
Server replies: sessionid, the Encrypted RSA Private Key
and an Encrypted randomly generated Session …Run Code Online (Sandbox Code Playgroud) 我试图用前导零和尾随零来表示一个数字,以便总宽度为7,包括小数点.例如,我想将"5"表示为"005.000".似乎字符串格式化将让我做一个或另一个但不是两个.这是我在Ipython中得到的输出,说明了我的问题:
In [1]: '%.3f'%5
Out[1]: '5.000'
In [2]: '%03.f'%5
Out[2]: '005'
In [3]: '%03.3f'%5
Out[3]: '5.000'
Run Code Online (Sandbox Code Playgroud)
第1行和第2行完全符合我的预期.第3行只是忽略了我想要前导零的事实.有任何想法吗?谢谢!
这回答看起来像是同一个问题:
..对我不起作用.
我无法使用MS SQL Server 2005 CAST或CONVERT将HEX字符串转换为整数.我错过了一些微不足道的事情吗?我已经进行了广泛的搜索,我能找到的最好的是冗长的用户函数,从十六进制字符串值变为看起来像十进制int的东西.当然有一种简单的方法可以在使用内置函数的查询中直接执行此操作,而不是编写用户函数?
谢谢
编辑以包含示例:
选择CONVERT(INT,0x89)
按预期工作,但是
从sometable中选择CONVERT(INT,'0x'+ substring(msg,66,2))
得到我:
"将varchar值'0x89'转换为数据类型int时转换失败."
一个额外的显式CAST:
选择CONVERT(INT,CAST('0x89'AS VARBINARY))
执行,但返回813185081.
将'Int','Decimal'等替换为'Varbinary'会导致错误.通常,如果需要,看起来是数字的字符串将被解释为数字,但在这种情况下不会被解释为数字,并且似乎没有可识别HEX的CAST.我想有一些简单而明显的东西,我只是错过了它.
Microsoft SQL Server Management Studio Express 9.00.3042.00
Microsoft SQL Server 2005 - 9.00.3080.00(Intel X86)2009年9月6日01:43:32版权所有(c)1988-2005 Microsoft Corporation在Windows NT 5.1上具有高级服务的Express Edition(Build 2600:Service Pack 3)
总结一下:我想采用十六进制字符串作为表中的值,并将其作为十进制整数显示为查询结果的一部分,仅使用系统定义的函数,而不是UDF.
有许多小编辑器,如Notepad ++,vim和SciTE - 但它们一次只能处理一个文件.换句话说,他们并不了解代码库的整个范围.
另一方面,我所看到的所有完整IDE都提供了代码完成(在项目中的所有文件上),需要大量内存才能运行.Eclipse PDT,PHPStorm等.
我正在寻找一个只有代码完成和语法着色的小IDE,可以在一些运行PHP的极限开发系统中移动.有这样的事吗?
Windows或Linux
更新
为了澄清,如果应用程序无法完成多文件代码(一个文件中的完整代码,基于其他文件中的类),那么它就不符合我的要求.