我想在iphone中查看.doc,.docx,.rtf,.ppt文件.
但是我觉得有些问题在我身边出现了问题并且不适用于上述格式,但我的代码对.txt和.pdf文件工作正常.
我已阅读有关Webview的文档,它声明它支持查看上述文档.
下面是我的.doc片段
[webView loadData:requestData MIMEType:@"application/msword" textEncodingName:@"UTF-8" baseURL:nil];
Run Code Online (Sandbox Code Playgroud)
for .ppt我使用的是MIME类型 "application/vnd.ms-powerpoint"
注意:如果我为.doc/.rtf创建MIME类型为"text/html",那么它会显示一些垃圾数据所以我认为MIME类型中缺少一些东西.
任何帮助都非常感谢.
等待你的回复.
更新:........
对于打开这些类型的文件格式,NSData似乎存在一些问题.我的数据是加密的,所以我不能直接使用 requestWithURL,其他的事情是我需要传递凭据来获取文件,如果我使用凭据保存凭据,凭据就不能正常工作
[[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:credential
forProtectionSpace:protectionSpace];
Run Code Online (Sandbox Code Playgroud)
然后使用下面的请求
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]] ]
Run Code Online (Sandbox Code Playgroud)
有没有什么办法可以将NSData用于上述格式,这样我就可以进行异步调用并传递我的凭据,然后解密数据并在WebView中显示它.
我是意图新手,我试图弄清楚如何使用解析(URI)和/或setType()来打开正确的应用程序类型,并允许我选择的东西.
我想从启动我的应用程序的意图,将允许用户挑选多种类型的文件(一.PDF,.DOCX,.XLSX,.PPTX,.DOC,.JPG,.PNG,.TXT,.LOG,等).我需要返回的活动是该文件的完整路径.
现在我正在使用setType("*/*")我在这里找到的选择器,但这会在Android中自动打开一些文档选择器.我有文件管理器和其他应用程序,并想知道标准setType是什么或MIME类型.提前致谢.
另外,如果已经回答,我道歉.我已经在线查看了,但我认为我正在寻找错误的东西,因为我得到的结果只是想要其中一个或不返回路径的意图.
我的适用代码如下:(注意:这是在片段内完成的)
static final int PICK_FILE_REQUEST = 101;
private String pathToFile = "";
public String selectFile() {
String path = "";
Intent intent = new Intent(Intent.ACTION_GET_CONTENT), chooser = null;
intent.setType("*/*");
chooser = Intent.createChooser(intent, "Find file to Print");
startActivityForResult(chooser, PICK_FILE_REQUEST);
path = pathToFile;
return path;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == …Run Code Online (Sandbox Code Playgroud) 我正在构建一个简单的文件上传/文件下载功能到我的数据库中.唯一复杂的部分是所有文件都需要使用我的花式shmancy加密方法加密.
所以我做的是创建一个SQL条目,存储如下内容:id_file,filename,extension,size,dateadded等
然后,一旦我获得了id_file,我获取文件内容,加密它们,然后将内容作为[id_file] .txt保存到我的服务器.
然后这是再次下载文件的代码:
header("Pragma: public");
header('Content-Disposition: attachment;filename="'.$file['name'].'.'.$file['extension'].'"');
header('Cache-Control: max-age=0');
echo someFunctionIMadeForGettingAndDecryptingFileContents($_GET['id_file']);
exit;
Run Code Online (Sandbox Code Playgroud)
非常简单的东西,适用于所有文件类型EXCEPT .docx和.xlsx.下载.docx或.xlsx文件时,Office给出了一个错误,说"Word在"NAME OF FILE"中找到了不可读的内容..你想恢复这个文件的内容吗?如果你信任源... bla bla"我那么单击"是".它思考了一下,文件打开就好了.但显然我不能让我的客户使用它,如果他们每次都会得到那个错误.
我编写的代码适用于所有其他文件类型.即使.doc,.xls和.zip文件也能正常工作.
我的第一个想法是看看标题.我尝试过各种各样的解决方案,例如这里列出的解决方案:
为什么我下载的文件被损坏或损坏了? PHP下载excel文件变得腐败
那些没用.
我知道一个问题可能是文件中添加了额外的填充或空白区域.但是,如果我上传.txt文件然后再次下载...我可以看到没有任何额外的添加.
如果我MD5原始文件(good.docx)和原始文件的下载版本(bad.docx),则哈希值不同.
如果我将good.docx更改为good.zip并解压缩存档.然后为bad.docx做同样的事情.然后MD5两个目录,哈希是相同的.我在good.zip和bad.zip中散列了每个文件,每个文件哈希都是一样的.
还要注意,在我的服务器上的其他地方,我使用PHPWord和PHPExcel动态生成Office文件,这些文件都下载得很好.我用于PHPExcel的头文件/代码是:
header("Pragma: public");
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
Run Code Online (Sandbox Code Playgroud)
(是的,我尝试在上面的其他代码中使用"Content-Type"标题,但这没有帮助.)
我也尝试将文件保存在我的服务器上,下载并打开它.在完成该过程时,我得到了同样的错误.这是我以前用来做的代码:
$f=fopen("/myPath/temp.docx","w");
fwrite($f,someFunctionIMadeForGettingAndDecryptingFileContents($_GET['id_file']));
fclose($f);
exit;
Run Code Online (Sandbox Code Playgroud)
我试过创建一个名为"blank.docx"的空Word文件.然后这样做而不是保存新文件的函数....它用解密的文件内容替换blank.docx的内容.但是当在该过程之后下载blank.docx时,我得到了所有相同的...一个错误,但它最终会打开.最初在blank.docx上的文件属性(如Template:Normal.dotm)都不在服务修改的blank.docx上.
我正在使用Office 2007
UPDATE
这是一个下载文件的好(原始)版本的链接:http://empowerdb.org/good.docx
这里有一个下载该文件的错误(已处理)版本的链接:http: //empowerdb.org/bad.docx
解
正如Llama先生在下面指出的那样,我的加密函数正在减少一些额外的空字节.但事实证明,罪魁祸首并不像你想象的那么明显.这是我的加密:
trim(base64_encode(IV.mcrypt_encrypt(MCRYPT_RIJNDAEL_128,ENCKEY,$contents,MCRYPT_MODE_CBC,IV)))
Run Code Online (Sandbox Code Playgroud)
问题不在于trim()或base64_encode().它是使用mcrypt函数.我解决这个问题的方法是在传递我的文件内容以进行加密之前我做了另一个base64_encode().所以这样......
$file_contents_encrypted=base64_encode(myEncryptionFunction($file_contents));
Run Code Online (Sandbox Code Playgroud)
当然,解密时也是如此.
base64_encode在技术上是运行两次.但我可以看到在这种情况下需要如何在mcrypt之前运行,因为.docx和.xlsx的独特zip格式
我正在尝试让Django的HttpResponse返回二进制数据,但没有成功。我已经尝试了一段时间的不同方法,但没有成功。
只要二进制数据值不在ASCII字符范围(小于0-255)的范围内,就可以将字符串编码为ASCII。使用latin-1进行编码时也发生了同样的情况。
创建字节字符串效果很好,但是如果包含某些值,则创建失败,例如,如果我在数据中包含以下字节:“ \ xf6 \ x52”,结果将得到不同的字节。由于某种原因,当我尝试查看结果响应时,第一个字节\ xf6被转换为0xfffd。
我希望获得一些反馈并为此提供帮助。
非常感谢!
-一种-
嘿,我是 android 新手,我需要pdf使用 Intent. 我正在使用此代码来设置 MIME 类型。
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("pdf/*")
Run Code Online (Sandbox Code Playgroud)
但它没有按我想要的方式工作,请向我提供任何建议,或者我可以对现有代码进行一些更改。
Google Slides 的 GUI 提供将 GSlides 演示文稿下载为 Powerpoint (myFile.pptx)。我在 Google Apps Script 文档中找不到等效的东西 - 任何指针?
编辑
感谢评论和答案,我尝试了这个片段:
function testFileOps() {
// Converts the file named 'Synthese' (which happens to be a Google Slide doc) into a pptx
var files = DriveApp.getFilesByName('Synthese');
var rootFolder = DriveApp.getRootFolder();
while (files.hasNext()) {
var file = files.next();
var blobPptx = file.getBlob().getAs('application/vnd.openxmlformats-officedocument.presentationml.presentation');
var result = rootFolder.createFile(blobPptx);
}
}
Run Code Online (Sandbox Code Playgroud)
它返回一个错误:
不支持从 application/vnd.google-apps.presentation 转换为 application/vnd.openxmlformats-officedocument.presentationml.presentation。(第 7 行,文件“代码”)
第二次编辑
根据评论中的另一个建议,我尝试从 Google App Script 进行 http 调用,这会将幻灯片直接转换为 pptx,没有大小限制。它在 G Drive …
我使用dropzone扩展来上传图像.它像魅力一样工作.但我想上传文档文件doc,docx,xls,xlsx.
$this->widget('ext.dropzone.EDropzone', array(
'model' => $model,
'attribute' => 'image_name',
'url' => Yii::app()->request->baseUrl.'/jobMaster/ImageUpload',
'mimeTypes' => array('image/jpeg', 'image/png','image/jpg'),
'onSuccess' => 'succcesupload',
//'maxFilesize'=> 5,
'options' => array(
'addRemoveLinks'=> true,
'removedfile'=> "js:function(file) {
var name = file.name;
$.ajax({
type: 'POST',
url: '".$this->createUrl('/jobMaster/deleteImageUpload')."',
data: 'id='+name,
dataType: 'html'
});
var _ref;
return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0;
}"
)
));
Run Code Online (Sandbox Code Playgroud)
但我不知道如何改变这个小部件.
我改变
'mimeTypes' => array('image/jpeg', 'image/png','image/jpg','file/doc','file/xls','file/xlsx','file/docx'),
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有答案吗?
我的服务器中有一个word文档,我想发送给我的客户端.其实我希望他们下载该文件.我在运行时创建该文件,我想在从服务器下载后删除它.我在本地尝试这种情况.创建文件后,我的服务器将其发送到客户端.在网络浏览器中,我看到:

我不想要这个.我想要Web浏览器打开保存文件对话框.我希望客户端下载真实文件.这是我的代码:
Guid temp = Guid.NewGuid();
string resultFilePath = Server.MapPath("~/formats/sonuc_" + temp.ToString() + ".doc");
if (CreateWordDocument(formatPath, resultFilePath , theLst)) {
Response.TransmitFile(resultFilePath);
Response.Flush();
System.IO.File.Delete(resultFilePath);
Response.End();
}
Run Code Online (Sandbox Code Playgroud) 我想用Apache POI打开我的excel文件.
我不知道文件是xls还是xlsx.我只有这样的东西:
InputStream myExcelFile = new ByteArrayInputStream(file.getData());
Run Code Online (Sandbox Code Playgroud)
这样我可以打开xls文件:
HSSFWorkbook hsf = new HSSFWorkbook(myxls);
Run Code Online (Sandbox Code Playgroud)
这样我可以打开xlsx文件:
XSSFWorkbook xsf = new XSSFWorkbook(myxls);
Run Code Online (Sandbox Code Playgroud)
如果我不知道格式,如何打开这两种类型的文件?
我正在开发一个使用 apache poi 读取/写入 excel 文件的 android 应用程序。为了从文件系统中选择一个文件,我使用了以下代码
private void showFileChooser() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("application/excel");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, "Select a File to Upload"),
FILE_SELECT_CODE);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.",
Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
该行intent.setType("application/excel");用于过滤excel文件。但android文件管理器不选择任何excel文件。它保持在禁用阶段。我通过替换intent.setType("application/excel");为intent.setType("file/.mp3");它来检查此代码它工作正常并且它选择 mp3 文件。我也试过intent.setType("file/.xls");没有运气。
尝试通过其余API将DOCX文档发送到docusign时,我收到以下错误.直到现在它已经运行了近一年.我用各种DOCX文件对它进行了测试,所有这些文件都返回了这个错误
"errorCode": "UNABLE_TO_CONVERT_DOCUMENT",
"message": "System was unable to convert this document to a PDF. Unable to convert Document(afasf.docx) to a PDF.
Error: UserId:********-****-*****-*****-*********** IPAddress:***.***.***.***
Source:ApiRESTv2:Could not submit Document to Conversion Server: EnvelopeId:00000000-0000-0000-0000-000000000000 DocumentName:afasf.docx -
SubmitCode: -10242\r\nCould not submit Document to Conversion Server: EnvelopeId:00000000-0000-0000-0000-000000000000 DocumentName:afasf.docx -
SubmitCode: -10242\r\nCould not submit Document to Conversion Server: EnvelopeId:00000000-0000-0000-0000-000000000000 DocumentName:afasf.docx -
SubmitCode: -10242\r\n"
Run Code Online (Sandbox Code Playgroud) android ×3
excel ×2
java ×2
xlsx ×2
apache-poi ×1
asp.net ×1
binary ×1
c# ×1
django ×1
docusignapi ×1
docx ×1
download ×1
dropzone.js ×1
httpresponse ×1
iphone ×1
php ×1
python ×1
string ×1
xls ×1
yii ×1